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

PHP
使用PHP5创建图形的巧妙方法四
如何用正确的方法来写出质量好的软件的75条体会 [转]
在PHP中开发XML应用程序
用PHP和AJAX创建RSS聚合器
cakephp框架
为 Linux 和 Windows 安装 PHP 和 Oracle 10g Instant Client
Php与java结合解析xml
AJAX框架汇总
PHP设计模式-对象行为型模式-VISITOR
无变形缩略图生成程序 swin img class Ver 0.1
winbinder开发php桌面程序[连载一:安装配置篇]
结合AJAX的PHP开发之后退、前进和刷新(1)
结合AJAX的PHP开发之后退、前进和刷新(2)
结合AJAX的PHP开发之后退、前进和刷新(3)
结合AJAX的PHP开发之后退、前进和刷新(4)
结合AJAX进行PHP开发之入门(1)
结合AJAX进行PHP开发之入门(2)
结合AJAX进行PHP开发之入门(3)
结合AJAX进行PHP开发之入门(4)
结合AJAX进行PHP开发之入门(5)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 160 ::
收藏到网摘: 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] => 轻音乐 )

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