Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在SimpleXML中使用不同编码的XHTML(通过DOM)_Php_Character Encoding_Simplexml - Fatal编程技术网

Php 在SimpleXML中使用不同编码的XHTML(通过DOM)

Php 在SimpleXML中使用不同编码的XHTML(通过DOM),php,character-encoding,simplexml,Php,Character Encoding,Simplexml,我一直在尝试使用解析通过输出缓冲捕获的XHTML。为了达到这个目的,我使用了一个DOM对象,这是一些非常好的建议 simpleXML对象被激发到其他类,这些类使用它来检查和/或更改页面,但当前忽略它,因此我可以让它工作,然后在操作完成后输出$xml->asXML。这并不简单,但它是一个相当优雅的解决方案,可以用来处理一些我想在某个时候替换的遗留代码 到目前为止还不错,但输出现在有奇怪的字符,看起来像是文本编码问题的结果 $doc = new DOMDocument(); $doc->loa

我一直在尝试使用解析通过输出缓冲捕获的XHTML。为了达到这个目的,我使用了一个DOM对象,这是一些非常好的建议

simpleXML对象被激发到其他类,这些类使用它来检查和/或更改页面,但当前忽略它,因此我可以让它工作,然后在操作完成后输出$xml->asXML。这并不简单,但它是一个相当优雅的解决方案,可以用来处理一些我想在某个时候替换的遗留代码

到目前为止还不错,但输出现在有奇怪的字符,看起来像是文本编码问题的结果

$doc = new DOMDocument();
$doc->loadHTML($this->PAGE); // <-- in goes nicely behaved XHTML
$doc->encoding = 'utf-8'; // This did not seem to help
$xmlObject = simplexml_import_dom($doc,$customClass);
//[...stuff...]
$this->PAGE = $xmlObject->asXML(); // -->outcomes XHTML with cruft
//[...logging and so forth...]
echo $this->PAGE;
根据meta标记,HTML采用iso-8859-1

如果这对任何人都有意义的话,我看到了很多

我尝试使用DOM文档转换为utf-8,我想这是无论如何都会发生的,因为它没有任何区别。更不用说xHTML中的元数据现在是错误的了

有没有一种方法可以检测到在转换之前使用的编码,然后可能通过标记故障字符或类似的方式进行切换?如果做不到这一点,是否还有另一种方法可以最大限度地减少由此造成的混乱

我需要把它做好,因为当完成后,它将与一群不同的人分享。理论上,这可能是一个非常大的数字,有不同的设置,我担心打破


更新:坚果!似乎大家都认为simpleXML只会处理utf-8,这只是对以下问题的一个小小的改变:如果使用的许多不同语言都发生了变化,而没有对xHTML结构进行编码,我该如何对这些变化带来的影响进行html编码?或者我遇到了死胡同吗?

这没有多大帮助,但我发现字符编码是在用户语言文件设置中设置的,因此我有一个常数可以用来获得正确的编码,只要我知道如何阻止utf-8转换(似乎是simpleXML的一部分)造成的混乱。此外,utf8\U编码在这里也没有帮助用户可能正在使用不受支持的编码,或者可能已经是utf-8。。。