我正在使用 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();
输出变为(注意 url 中的 & 被转换为&
):
<!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: 期待 ';' 在实体中,行:1
我不知道那是什么意思。
我错过了什么吗?