PHP DOMDocument 命名空间

标签 php dom

我正在编写一个脚本,它获取一个网页并检测使用了多少次类似 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/

相关文章:

jquery - 选择仅由于继承样式而隐藏的元素(而不是因为没有文本内容)

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 从 mysql 数据库中提取数据时,如何在 php 字符串中使用多个属性?

javascript - 检索 CSSStyleDeclaration 原生 Javascript 对象的键

java - Xerces 在 SUN JRE v1.5 和 IBM J9 v1.5 上的行为不同

javascript - Vanilla JS 想在每次点击时创建一个新的进度条?

java - 如何从网站 url 获取干净的 xml 表示

php - 多选选项

php - 列的 PostgreSQL 乘法

javascript - 如何从mySQL获取数据并在Modal中查看