使用正则表达式解析HTML链接

时间:2012-06-04 14:13:52

标签: php regex parsing

我有以下代码:

$regex='|<a.*?href="(.*?)"|';      //PARSE FOR LINKS
preg_match_all($regex,$result,$parts);
$links=$parts[1];

foreach($links as $link){
    echo $link."<br>";
}

其输出如下:

/watch/b4se39an
/watch/b4se39an
/bscsystem
/watch/ifuyzwfw
/watch/ifuyzwfw
/?sort=v
/?sort=c
/?sort=l
/watch/xk4mvavj
/watch/2h7b53vx
/watch/d7bt47xb
/watch/yh953b17
/watch/tj3z6ki2
/watch/sd4vraxi
/watch/f2rnthuh
/watch/ey6z8hxa
/watch/ybgxgay1
/watch/3iaqyrm1
/help/feedback

如何使用正则表达式提取/watch/.....字符串?

1 个答案:

答案 0 :(得分:2)

修改您的正则表达式以包含/watch/的限制:

$regex = '|<a.*?href="(/watch/.*?)"|'; 

一个简单的测试脚本可以显示它正在运行:

$tests = array( "/watch/something", "/bscsystem");
$regex = '|<a.*?href="(/watch/.*?)"|'; 

foreach( $tests as $test) {
    $link = '<a href="' . $test . '"></a>';
    if( preg_match( $regex, $link))
       echo $test . ' matched.<br />';
}

这将产生:

/watch/something matched.