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