regex
2014-09-23 105 views 0 likes 
0

已經有幾篇關於查找文本鏈接的文章,但是沒有一篇完全適用於我的案例。 這一個是更接近我:使用正則表達式查找鏈接到文本

$reg_exUrl = "#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#"; 
    preg_match_all($reg_exUrl, $content, $result); 

這幾乎適用於除下列內容的所有情況:

$content = '<p><br></p><p>https://www.google.com <br></p><p>http://localhost/index.php?view=model&nbsp;<br></p><p><br></p><p>http://localhost/index.php?view=scheduler/ <br></p><p><br></p><p>http://localhost/index.php?view=module<br></p><p><br></p><p><br></p>'; 

如果鏈接後面沒有空格則preg_match_all取HTML將鏈接作爲鏈接的一部分

如何修改正則表達式以便在存在HTML標記時停止?

回答

0

你可以使用下面的正則表達式來找到上述字符串中的鏈接,

(https?|ftp)://.*?(?=&nbsp|\s|<|>) 

DEMO

相關問題