DOM元素中的&符号在锚元素的href属性和UTF-8中

时间:2016-07-21 05:08:15

标签: php domdocument ampersand

我尝试将一些html加载到DOMDocument php对象。但它无法加载具有带&符号的属性href的锚元素。 这是要加载的html代码:

<p>Jaźń</p>
<p>gęślą<a href="http://example.com/?abc&def">zażółć</a></p>
<p>Hello!</p>

正如您所看到的,在url的查询字符串中,abcdef之间存在&符号。它是utf-8文本。 除非删除&符号,否则将其加载到DOMDocument会导致警告。警告是

  

警告:DOMDocument :: loadHTML():htmlParseEntityRef:expecting';'在实体中,第8行/ 2英寸/ MXN5X

在我的phpunit中会导致错误。

代码是这样的:

<?php
$html = <<< 'WOW'
<p>Jaźń</p>
<p>gęślą<a href="http://example.com/?abc&def">zażółć</a></p>
<p>Hello!</p>
WOW;
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NODEFDTD);

在线版:https://3v4l.org/MXN5X

如何将带有&符号的锚元素加载到DOMDocument对象?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。你应该使用&amp;而不是&amp;它运行得很好......