private function FilterOnomasticon::html_entities_normalize_xml in Onomasticon 8
Same name and namespace in other branches
- 2.x src/Plugin/Filter/FilterOnomasticon.php \Drupal\onomasticon\Plugin\Filter\FilterOnomasticon::html_entities_normalize_xml()
Unicode-proof htmlentities function. Returns 'normal' chars as chars and special characters as numeric html entities.
Parameters
string $string:
Return value
string
1 call to FilterOnomasticon::html_entities_normalize_xml()
- FilterOnomasticon::process in src/
Plugin/ Filter/ FilterOnomasticon.php - Main filter function as expected by Drupal.
File
- src/
Plugin/ Filter/ FilterOnomasticon.php, line 139
Class
- FilterOnomasticon
- Plugin annotation @Filter( id = "filter_onomasticon", title = @Translation("Onomasticon Filter"), description = @Translation("Adds glossary information to words."), type = Drupal\filter\Plugin\FilterInterface::TYPE_MARKUP_LANGUAGE, settings…
Namespace
Drupal\onomasticon\Plugin\FilterCode
private function html_entities_normalize_xml($string) {
// Get rid of existing entities and double-escape.
$string = html_entity_decode(stripslashes($string), ENT_QUOTES, 'UTF-8');
$result = '';
// Create array of multi-byte characters.
$ar = preg_split('/(?<!^)(?!$)/u', $string);
foreach ($ar as $c) {
$o = ord($c);
if (strlen($c) > 1 || ($o < 32 || $o > 126) || $o == 38) {
// Convert to numeric entity.
$c = mb_encode_numericentity($c, array(
0x0,
0xffff,
0,
0xffff,
), 'UTF-8');
}
$result .= $c;
}
// Mask ampersands
$result = str_replace('&', '###amp###', $result);
$result = html_entity_decode($result, ENT_HTML5);
$result = str_replace('###amp###', '&', $result);
return $result;
}