当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP中解析HTML字符串的问题

PHP
PHP 开发环境的选择、建立及使用(5)
PHP 开发环境的选择、建立及使用(6)
PHP 开发环境的选择、建立及使用(7)
PHP 开发环境的选择、建立及使用(8)
PHP 开发环境的选择、建立及使用(9)
Win2003下APACHE PHP5 MYSQL4 PHPMYADMIN 的简易安装配置
PHP新手上路(八) 文件上传
PHP新手上路(九) 投票系统
PHP新手上路(十) 简易banner动态更替
PHP新手上路(十一) 数据库链接
PHP新手上路(十二)使用PHP来操作Oracle数据库
PHP新手上路(十三)PHP资源
PHP新手上路(十四) 其他杂项
session全教程(一)
session全教程(二)
session全教程(三)
PHP编码规范
第十五节--Zend引擎的发展 -- Classes and Objects in PHP5 [15]
第十四节--命名空间 -- Classes and Objects in PHP5 [14]
第十二节--类的自动加载 -- Classes and Objects in PHP5 [12]

PHP中解析HTML字符串的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 62 ::
收藏到网摘: n/a

下午的时候同事碰到了一个小问题,是这样的:他从别人的接口中取回一长串的HTML,但是他只需要其中的一块。这就涉及到在PHP中解析HTML字符串的问题,花了挺长时间,找了不同的方法,在此记录一下:

1.最简单的就是字符串解析,灵活运用 strpos , substr 混合处理,把那一段代码抠出来。由于他要取的是一个固定的div内的东西,而且那个div 的 class 属性也是固定的,所以这种方法倒也简单,直接先以<div class=”xxx” 作为needle 找到那个div,然后做一些操作就行了。

2.PHP DOMDocument 。听到这个问题的时候首先想到的是PHP的DOM解析功能,刚开始真的以为找到了救星。但是最后发现这个东西的功能不能解决问题,反正我是没找到。因为最好我们想要把div里面的html代码输出出来,结果用 DOMDocument 提供的方法输出的全是不带标签的纯文本,无奈,只好弃用。(可能是我不知道它的用法,希望知道的不吝赐教。)

3. Tidy Functions 。其实 Tidy 是用来整理HTML的,不过它也可以进行HTML的解析处理。先使用tidy_parse_string() 把字符串转换成 tidy 对象,然后就可以利用tidy的方法对其进行处理了,还算方便,不过这个东西只能在 PHP 4.3.x 和 PHP 5 的版本下才有。具体方法和使用请参考手册。

4. strip_tags() 。无意中发现了这个函数,实在是太好用了!!上面几种方法最好我都是结合着strip_tags()来使用的。strip_tags() 可以过滤掉HTML和PHP标签,返回一个全新的字符串!用法如下:

string strip_tags ( string 要处理的字符串 [, string 想保留的标签] )

如果你想保留某些标签,比如 <a> 标签,就可以这样写,strip_tags($str, “<a>”) ,如果想保留多个标签,就可以这么写: strip_tags($str, “<a> <img>”);  标签之间用空格隔开就可以了。

5.另外,据我另一个同事测试,好像使用 XMLReader 来搞,没尝试,有兴趣的可以搞一下。

在工作中学习到的一些小东西,记录下来,省的以后忘记了。如果大家有什么更好的技巧,欢迎赐教,谢谢。