我正在使用DOMDocument加载一些用户贡献的HTML块然后操纵它们。看来(假设我正在做的一切正确),DOMDocument通过htmlentities运行href属性中的url。这使得我的查询字符串中带有&符号的锚标签出错了。
示例:
$html = <<<HTML
<a href="http://foo.com?bar=baz&foo=bar">Foo</a>
HTML;
$dom = new DOMDocument;
$dom->loadHTML($html);
echo $dom->saveHTML();
输出变为(请注意,网址中的&amp;转换为&
):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><a href="http://foo.com?bar=baz&foo=bar">Foo</a></body></html>
此外,在致电$dom->loadHTML($html);
期间,输出了以下警告......
警告:DOMDocument :: loadHTML():htmlParseEntityRef:expecting';'在 实体,行:1
我不知道这意味着什么。
我错过了什么吗?
答案 0 :(得分:2)
&符号用于有效/兼容的XHTML中以确定HTML实体字符。
请参阅此参考列表: http://www.w3schools.com/tags/ref_entities.asp
您的DOMDocument抱怨,因为它在路上检测到无效的字符定义,并在出路时进行了纠正。