<?php
ini_set("error_reporting", -1 & ~E_DEPRECATED);
set_error_handler(function($s, $m, $f, $l, $c = null) { print "PHP Warning: $m in " . basename($f) . " on line $l"; }, E_WARNING);
$xml = base64_decode("PGRpdj48cD7M4OzgIOz76+Ag8ODs8y48L3A+PC9kaXY+");
$options =
LIBXML_HTML_NOIMPLIED
| LIBXML_NOENT
| LIBXML_NONET
| LIBXML_NOWARNING
| LIBXML_NOXMLDECL
| LIBXML_HTML_NODEFDTD
;
print "<pre>";
foreach([
'default_charset',
'input_encoding',
'internal_encoding',
'output_encoding',
'iconv.input_encoding',
'iconv.internal_encoding',
'iconv.output_encoding',
'mbstring.http_input',
'mbstring.http_output',
'mbstring.internal_encoding',
] as $set)
{
ini_set($set, "UTF-8");
printf("%-12s: %s\n", $set, ini_get($set));
}
print "</pre>";
ob_start(function($str, $phase)
{
return iconv("Windows-1251", "UTF-8", $str);
});
print "--- CP1251 ---\n$xml\n";
print "Direct:";
$doc = new DOMDocument;
$doc->loadHTML("$xml", $options);
$doc->encoding = "Windows-1251";
print $doc->saveXML(null, LIBXML_NOENT);
print "With encoding:";
$doc = new DOMDocument("1.0", "Windows-1251");
$doc->loadHTML("$xml", $options);
$doc->encoding = "Windows-1251";
print $doc->saveXML(null, LIBXML_NOENT);
print "With inline encoding:";
$doc = new DOMDocument;
$doc->loadHTML("<?xml version=\"1.0\" encoding=\"Windows-1251\" standalone=\"yes\"?>$xml", $options);
$doc->encoding = "Windows-1251";
print $doc->saveXML(null, LIBXML_NOENT);
print "With both:";
$doc = new DOMDocument("1.0", "Windows-1251");
$doc->loadHTML("<?xml version=\"1.0\" encoding=\"Windows-1251\" standalone=\"yes\"?>$xml", $options);
$doc->encoding = "Windows-1251";
print $doc->saveXML(null, LIBXML_NOENT);
ob_end_flush();
$xml = iconv("Windows-1251", "UTF-8", $xml);
print "--- UTF-8 ---\n$xml\n";
print "Direct:\n";
$doc = new DOMDocument;
$doc->loadHTML("$xml", $options);
$doc->encoding = "UTF-8";
print $doc->saveXML(null, LIBXML_NOENT);
print "With encoding:\n";
$doc = new DOMDocument("1.0", "UTF-8");
$doc->loadHTML("$xml", $options);
$doc->encoding = "UTF-8";
print $doc->saveXML(null, LIBXML_NOENT);
print "With inline encoding:";
$doc = new DOMDocument;
$doc->loadHTML("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>$xml", $options);
$doc->encoding = "UTF-8";
print $doc->saveXML(null, LIBXML_NOENT);
print "With both:";
$doc = new DOMDocument("1.0", "UTF-8");
$doc->loadHTML("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>$xml", $options);
$doc->encoding = "UTF-8";
print $doc->saveXML(null, LIBXML_NOENT);
preferences:
62.1 ms | 402 KiB | 5 Q