我正在尝试解析一些包含左右引号的UTF-8编码的html文本 但是当我尝试使用saveHTML()从DOM中获取html的值时,引号总是搞砸了。
现在我已经尝试了几个包括utf8_encoding文本然后将它放入DOM,我已经尝试将('1.0','UTF-8')放入构造函数中,它也没有用。
我已经没有想法如何解决这个问题了。 将引号转换为html实体不是我的选择。
以下是打破引号的简化示例:
$a = "<html><body><div>won’t you, will you, won’t you, join the </div></body></html>";
$dom = new DOMDocument();
$dom->loadHTML($a);
$xpath = new DOMXPath($dom);
$tag = $xpath->query('//div');
foreach($tag as $t)
echo $dom->saveHTML($t);
返回的文字看起来像:你愿意,不管你,你愿意,不会,你加入
答案 0 :(得分:1)
解决方案似乎是使用$ dom-&gt; loadXML($ a)而不是loadHTML() 我试过了,它对我有用。
答案 1 :(得分:1)
好的,如果你坚持使用loadHTML,那么试试这个:
首先在你的html中添加一个合适的元标记,如下所示:
$a = "<html>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<body><div>won’t you, will you, won’t you, join the </div></body></html>";
然后你可以使用loadHTML($ a)并且它可以工作
最后,您无法添加额外的元标记,然后您可以尝试这样做: 使用$ dom-&gt; loadHTML(utf8_decode($ a)); 这也会起作用,因为它会首先将你的字符串从utf8转换为latin-1,然后将其加载到latin-1字符集的dom中,你也会得到latin-1的输出。