您好我有以下代码,我只想拉出有www的链接。在他们中
<p> Text < href="http://url.com/link/">link text</a> more text < href="http://www.anotehrurl.com/">more link text</a> and < href="http://www.anotherurl.com/sub/sub/link.html">link text</a>. more text < href="http://keepurl.co.uk/link/">link text</a> more text < href="http://www.anotherurl.com/sub/sub/link.html">link text</a>. < href="http://www.anotherurl.com/sub/sub/link.html">link text</a>. < href="http://www.anotehrurl.com/">more link text</a></p>
即时使用reg表达式:
(<a href="http:\/\/www.[\d\D]*?\/">([\d\D]*?)<\/a>)
基本上我想匹配任何以www开头的链接,并且不匹配任何链接,即keepurl.co.uk /.......
我已经通过rubular提出了这个问题并提出以下建议:
{ 结果1
1&LT; href =“http://www.anotehrurl.com/”&gt;更多链接文字 2.更多链接文字 结果2
1&LT; href =“http://www.anotherurl.com/sub/sub/link.html”&gt;链接文字。更多文字 &LT; href =“http://keepurl.co.uk/link/”&gt;链接文字 链接文本 结果3
1&LT; href =“http://www.anotherurl.com/sub/sub/link.html”&gt;链接文字。 &LT; href =“http://www.anotherurl.com/sub/sub/link.html”&gt;链接文字。 &LT; href =“http://www.anotehrurl.com/”&gt;更多链接文字 2.更多链接文字 }
因为你可以看到它超出我想要的范围。
欢呼声
答案 0 :(得分:1)
这个怎么样:
<?php
$html = <<<END
<p> Text < href="http://url.com/link/">link text</a> more text
< href="http://www.anotehrurl.com/">more link text</a>
and < href="http://www.anotherurl.com/sub/sub/link.html">link text</a>.
more text < href="http://keepurl.co.uk/link/">link text</a> more text
< href="http://www.anotherurl.com/sub/sub/link.html">link text</a>.
< href="http://www.anotherurl.com/sub/sub/link.html">link text</a>.
< href="http://www.anotehrurl.com/">more link text</a></p>
END;
$r = '#href=\"http://(www\.[^\"]*)\">(.+)</#iU';
preg_match_all($r, $html, $m);
var_dump($m[1]);
var_dump($m[2]);
?>
输出:
array
0 => string 'www.anotehrurl.com/' (length=19)
1 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
2 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
3 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
4 => string 'www.anotehrurl.com/' (length=19)
array
0 => string 'more link text' (length=14)
1 => string 'link text' (length=9)
2 => string 'link text' (length=9)
3 => string 'link text' (length=9)
4 => string 'more link text' (length=14)
答案 1 :(得分:0)
/<a.+?href="([http:\/\/]?www\..+?)".+?>/i
类似的东西。
答案 2 :(得分:0)
假设您已将文本保存在$string
变量中,这应该适合您。
preg_match('@href="(http://www\.(?!keepurl.co.uk).*?)"@i', $string, $m);
($!regex)
执行的地方:
零宽度负向前瞻。与正向前瞻相同,只是如果前瞻内的正则表达式无法匹配,则整体匹配才会成功。