为什么这个
$html = '<a href="/browse/product.do?cid=1&vid=1&pid=1" class="productItemName">what is going on here</a>';
$dom = new DOMDocument();
$dom->loadhtml($html);
$xpath = new DOMXPath($dom);
$selectors['link'] = '//a/@href';
$links_nodeList = $xpath->query($selectors['link']);
foreach ($links_nodeList as $link) {
$links[] = $link->nodeValue;
}
echo("<p>links</p>");
echo("<pre>");
print_r($links);
echo("</pre>");
输出
links
Array
(
[0] => /browse/product.do?cid=1&vid=1&pid=1
)
而不是
links
Array
(
[0] => /browse/product.do?cid=1&vid=1&pid=1
)
答案 0 :(得分:6)
答案很简单:
&
是一种在XML文档中表示字符"&"
的特殊方式。
这两个表示相同的字符。
当&符号的转义形式输出为文本(而不是XML)时,将其显示为"&"
是正确的。
由@LarsH在其评论中进一步阐述:
当你说
loadhtml($html)
;时,你正在将字符串解析为HTML, 这意味着解释了字符实体(如&
) 进入他们所代表的角色(如&
)。如果你想要一个字符串 这将被解释为&
,你需要逃脱&符号, 例如&amp;