2014-07-15 46 views
1

我想查找字符串中的最後一個超鏈接。查找字符串中的最後一個超鏈接

的http://

HTTPS:超鏈接可以與下面的一個開始//

市場://

是否有PHP正則表達式的方法來找到這個?

謝謝。

+0

是沒有找到一個正則表達式的方法。 – PeeHaa

+0

當然有。是使用正則表達式的最佳解決方案?很難知道。你能否提供一個字符串示例以及你已經嘗試過的...? –

回答

3

您可以使用該負前瞻基於正則表達式:

~\b(?:https?|market)://\S+?(?!.*?\b(?:https?|market)://)~i 
+1

你需要使'\ S +'非貪婪。現在它匹配'http:// f,http:// foo'。 [演示](http://regex101.com/r/kJ3dW9/1)。 –

+0

謝謝埃德,我編輯它。 – anubhava

0
$regex = "/(http|https|market)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 

$text = "http://link.com some text in between https://link.com more text in between market://link.com"; 

if(preg_match_all($regex, $text, $url)) 
{ 
    echo $url[0][count($url[0])-1]; // Outputs: market://link.com 
} 
+0

公平地說,如果字符串是逗號分隔的,那麼[簡單的爆炸會比這裏的正則表達式更好](http://programmers.stackexchange.com/a/113243/108554) –

+0

這只是一個例子。它工作正常,沒有逗號。 –

相關問題