2012-06-10 130 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