2012-06-10 132 views
0
<?php 
$string = "http://example.com/file/D1 http://example.com/file/D2 
http://example.com/file/D3"; 
preg_match_all('/(https?\:\/\/)?(www\.)?example\.com\/file\/(\w+)/i', $string, $matches); 
foreach($matches[3] as $value) 
{ 
print $value; 
} 
?> 

我想预先匹配第三个链接并获得“D3”。
我不希望它与其他两个链接匹配。这就是为什么它应该检查链接在开始或结束时是否有空白。
我知道,与空格匹配的表达式是\s。我试过但不知何故我不明白。 :(PHP - 正则表达式(preg_match)

+0

你真的需要正则表达式?它会更容易 – flowfree

+0

是的,我真的需要正则表达式 – Helena

+0

你真的需要'preg_match_all'吗?D3链接的标准是什么?它总是第三个链接吗?它总是在字符串的末尾? – hakre

回答

2

您可以通过使用字符串操作添加$像这样的字符串的结尾匹配,并且它只会返回最后一个。

preg_match_all('/(https?\:\/\/)?(www\.)?example\.com\/file\/(\w+)$/i', $string, $matches); 
+0

这只显示最后一个。 但链接不一定是最后一个。 – Helena