我正在编写一个脚本,该脚本需要一个网页并检测使用诸如Facebook之类的按钮之类的东西的次数。由于最好用DOM完成此操作,因此我决定使用PHP的DOMDocument。
不过,我遇到的一个问题是针对Facebook的“赞”按钮之类的元素:
<fb:like send="true" width="450" show_faces="true"></fb:like>
由于从技术上讲,此元素的命名空间为“fb”,因此DOMDocument会发出警告,指出未定义此命名空间前缀。然后,它会继续删除前缀,因此当我提到元素时,其标签不再是fb:like,而是like。
有什么办法可以“预注册” namespace 吗?有什么建议?
最佳答案
我遇到了同样的问题,并提出了以下解决方案/解决方法:
没有一种干净的方法可以使用DOMDocument解析HTML和 namespace 而不丢失 namespace ,但是有一些解决方法:
<fb:like send="true" width="450" show_faces="true"></fb:like>
然后会导致
<fb:like xmlNamespace="fb" send="true" width="450" show_faces="true"></fb:like>
<like xmlNamespace="fb" send="true" width="450" show_faces="true"></like>
我不认为OP仍在寻找答案,我只是将其发布给在他们的研究中找到该帖子的任何人。