我正在编写一个脚本,它获取一个网页并检测使用了多少次类似 facebook 之类的按钮。由于这最好使用 DOM 来完成,因此我决定使用 PHP 的 DOMDocument。
不过,我遇到的一个问题是针对像 facebook 的点赞按钮这样的元素:
<fb:like send="true" width="450" show_faces="true"></fb:like>
因为这个元素在技术上有一个命名空间“fb”,DOMDocument 抛出一个警告说这个命名空间前缀没有定义。然后它继续去除前缀,所以当我到达所述元素时,它的标签不再是 fb:like,而是 like。
有什么方法可以“预注册”命名空间吗?有什么建议吗?
最佳答案
你可以使用 tidy在对它使用 xml 解析器之前进行修饰。
$tidy = new tidy();
$config = array(
'output-xml' => true,
'input-xml' => true,
'add-xml-decl' => true,
);
$tidy->ParseString($htmlSoup, $config);
$tidy->cleanRepair();
echo $tidy;
关于PHP DOMDocument 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985443/