2013-08-07 60 views
0

我怎么会做出regex从那里我匹配的url从网页提取的URL与正则表达式在PHP

例如我的网址的中央部分匹配将是这样一个页面中提取urls

http://m2.imageserver.net/media/thumb/66177422433.jpg http://m4.imageserver.net/media/thumb/21717623342.jpg http://m1.imageserver.net/media/thumb/12327722433.jpg

而且我想只是URL作为子域可以改变的imageserver.net/media部分匹配。

+0

他们是链接还是纯文本? – zerkms

+0

'strpos($ haystack,$ needle)'似乎是一个更简单的方法 – Raptor

+0

比什么更好?你为什么觉得有一个浏览器应用程序? – zerkms

回答

1

您的正则表达式将是http://[a-zA-Z0-9]+.imageserver.net+[a-zA-Z0-9/]+.jpg

建议:在尝试使用代码之前,请使用regexpal进行检查。它基本上是一个JavaScript正则表达式测试器。

更新:添加一个分隔符:

$match_pattern = "#http:\/\/[a-zA-Z0-9]+.imageserver.net+[a-zA-Z0-9\/]+.jpg#"; 
preg_match_all($match_pattern,$string_to_be_matched,$url_array); 
+0

这给了我一个:'警告:preg_match_all():分隔符不能是在/Users/user/Dropbox/localhost/PHPCrawl_081/test.php在行61 ' – ian

+0

@ian:如何添加分隔符的字母数字或反斜杠?你有没有研究如何在PHP中使用正则表达式? – zerkms

+0

@感谢伟大的作品! – ian

0

我尝试这一个给你。也许它可以帮助你。

$text = "http://m2.imageserver.net/media/thumb/66177422433.jpg"; 

$text = preg_match("/imageserver.net\/media/", $text, $match); 

print_r($match); 

如果我完全理解你的问题,这可能是答案。

+0

'$ match'数组将会是一串''imageserver.net/media''字符串 – zerkms

+0

是的,但是如果输出$文本,那么它显示1或者如果匹配的话就显示为true。 – shark

+0

再次阅读该问题 - OP需要提取网址 – zerkms

0

我不使用正则表达式,但我认为这可能工作。

$string = "jjYy5nhttp://m2.imageserver.net/media/thumb/66177422433.jpgru56rtjr"; 

    $pattern = "/http:\/\/[^0-9a-zA-Z_ -].imageserver.net\/media\/(.*?).jpg/"; 
    if (@preg_match_all(${pattern}, ${string}, $matches)) { 
     print $matches['0']; 
    }