<?php
$content = "λ";
$dom = new \DOMDocument('1.0', 'UTF-8');
$dom->encoding = "UTF-8";
$dom->strictErrorChecking = false;
$dom->substituteEntities = false;
$dom->formatOutput = false;
mb_detect_order("ASCII,UTF-8,ISO-8859-1,windows-1252,iso-8859-15");
function loadNprepare($content,$encod='') {
if (!empty($content)) {
if (empty($encod))
$encod = mb_detect_encoding($content);
$headpos = mb_strpos($content,'<head>');
if (FALSE=== $headpos)
$headpos= mb_strpos($content,'<HEAD>');
if (FALSE!== $headpos) {
$headpos+=6;
$content = mb_substr($content,0,$headpos) . '<meta http-equiv="Content-Type" content="text/html; charset='.$encod.'">' .mb_substr($content,$headpos);
}
$content=mb_convert_encoding($content, 'HTML-ENTITIES', $encod);
}
return $content;
}
// Little hack to force UTF-8
// if (strpos($content, '<?xml encoding') === false) {
// $hack = strpos($content, '<body') === false ? '<?xml encoding="UTF-8"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><body>' : '<?xml encoding="UTF-8">';
// $loaded = $dom->loadHTML($hack . $content);
// } else {
// $loaded = $dom->loadHTML($content);
// }
$dom->loadHTML(loadNprepare($content));
foreach ($dom->childNodes as $item) {
if ($item->nodeType === XML_PI_NODE) {
$dom->removeChild($item); // remove encoding hack
break;
}
}
// Remove added body & doctype
$exportedContent = preg_replace(array(
"/^\<\!DOCTYPE.*?<html><body>/si",
"!</body></html>$!si"),
"", $dom->saveHTML());
var_dump(trim($exportedContent)); // Should return string(8) "λ"
preferences:
32.02 ms | 402 KiB | 5 Q