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

PHP
php sprintf()函数让你的sql操作更安全
php SQLite学习笔记与常见问题分析
使用PHP socke 向指定页面提交数据
jq的get传参数在utf-8中乱码问题的解决php版
PHP 得到根目录的 __FILE__ 常量
PHP 表单提交给自己
PHP4中session登录页面的应用
简单示例AJAX结合PHP代码实现登录效果代码
php+mysql写的简单留言本实例代码
php在线打包程序源码
php intval的测试代码发现问题
php5编程中的异常处理详细方法介绍
php include的妙用,实现路径加密
PHP中$_SERVER的详细参数与说明
php 全文搜索和替换的实现代码
PHP一些常用的正则表达式字符的一些转换
php自动跳转中英文页面
MySql中正则表达式的使用方法描述
说明的比较细的php 正则学习实例
新安装的MySQL数据库需要注意的安全知识

PHP中解析HTML字符串的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 148 ::
收藏到网摘: 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 来搞,没尝试,有兴趣的可以搞一下。

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