翻译的原文在这里,很多库我都没用过,所以仅简单记录一些特性,和我认为有用的库,以备不时之需。
原生XML扩展
建议用php
原生的xml扩展,通常要比第三方库要快,灵活性更高,我想怎么弄就怎么弄。
DOM
用这个dom扩展,你可以通过dom接口动态地读取或更新HTML。也可做xpath查询,它是基于libxml的。
学习DOM需要花些时间,不过也是值得,它是一个通用的接口,你在PHP学的这个技巧去到其它语言也能信手捻来。
SimpleXml
这个扩展可以非常方便地将xml转换成对象,但前提是xml需要是结构良好的xhtml,否则会出错。如果你解释的是不完整的html,还是用DOM扩展好。
第三方库(基于libxml)
如果你想用第三方库,建议使用那些构建在DOM/libxml之上的。
phpQuery
phpQuery 是一个服务器端,支持CSS3方式选择的DOM接口。此外它还可用于命令行。
Zend_Dom
其中的Zend_Dom_Query 提供一个统一的接口利用xpath或css选择器去查询DOM结构。
QeuryPath
QeuryPath 可以用来维护HTML/XML 它不单只是处理本地文件,web services 及数据库资源也可以处理。它很多地方都有点像jquery,不过记住它是用于服务器端的。
第三方库(不基于libxml)
SimpleHtmlDom
强烈不建议使用,效率太慢内存消耗严重。
HTML5
用上面库来解释html5有时会得不到想要的结果,因为HTML5的语法规则会有点不同,
像这里的例子,在现行的标准中script标签里面不能有“</”,但是hmtl5可以有。这时就要用一些专用的库来解释:
html5lib
html5lib可用于php和python的HTML 5 解释器。由于当html5标准还没最终定下来,只能说是目前最大程度兼容。当html5标准定下来后,我们应该会见到更多优秀的库。
WebServices
如果你不想自己写PHP,就用web services吧
YQL
YQL 是雅虎的webservice接口。允许你查询,过滤,组合来自不同地方的互联网数据。它就像SQL语言一样,有过数据库经验的开发人员不会对它陌生。
正则表达式
正则是最后最后的选择,不鼓励大范围使用。大部分的HTML结构复杂多变,只要多个空格,多个属性,你的表达式可能就匹配错误,你需要小心地去验证各个表达式的正确性,既然上面有这么多的解释器比你更熟悉HTML语法,你又何必冒太大的风险地白写一堆代码呢。