当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP正则表达式提取超链接及其标题

PHP
php header 详细使用说明与使用心得
php利用header函数实现文件下载时直接提示保存
php $_SERVER当前完整url的写法
PHP 配置open_basedir 让各虚拟站点独立运行
PHP 程序员的调试技术小结
php 静态变量的初始化
php与XML、XSLT、Mysql的结合运用实现代码
php+javascript的日历控件
php 引用(&)详解
PHP小程序自动提交到自助友情连接
PHP 单引号与双引号的区别
PHP 递归效率分析
PHP 进程锁定问题分析研究
phplock(php进程锁) v1.0 beta1
php Memcache 中实现消息队列
MYSQL 小技巧 -- LAST_INSERT_ID
Ajax+PHP 边学边练 之二 实例
php 运行效率总结(提示程序速度)
Ajax PHP 边学边练 之三 数据库
在mysql数据库原有字段后增加新内容

PHP正则表达式提取超链接及其标题


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

有这么一段HTML,比较不规则的,如果要提取其中的链接地址和链接名称,怎么弄?

//HTML
$str = '<a id="top8" href="http://list.mp3.baidu.com/song/A.htm?top8" class="p14" target="_top">歌曲列表</a><br><a target="_blank" id="bp" href="http://list.mp3.baidu.com/list/bangping.html" class="p14">中文金曲榜</a><br><td nowrap="nowrap">&#8226;&nbsp;<a id="top19" href="qingyinyue.html?top19" class="p14" target="_top">轻音乐</a></td>';

利用正则表达式是最简单的,其它的办法,偶米去想。。。

$pat = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i';
preg_match_all($pat, $str, $m);

输出方法:

print_r($m[2]);
print_r($m[4]);

或者:
for($i=0;$i<count($m[2]) ;$i++ ){
    echo '<li><a href="'.$_SERVER['PHP_SELF'].'?url='.$m[2][$i].'">'.$m[4][$i].'</a>';
}

显示结果是:

Array ( [0] => http://list.mp3.baidu.com/song/A.htm?top8 [1] => http://list.mp3.baidu.com/list/bangping.html [2] => qingyinyue.html?top19 ) Array ( [0] => 歌曲列表 [1] => 中文金曲榜 [2] => 轻音乐 )

于是,我们要采集某个网站的标题及链接地址方法就出来了。。。自己套用吧。。。