末這是文本樣本:PHP正則表達式:匹配文本的URL,直到空間或字符串
$text = "asd dasjfd fdsfsd http://11111.com/asdasd/?s=423%423%2F gfsdf http://22222.com/asdasd/?s=423%423%2F
asdfggasd http://3333333.com/asdasd/?s=423%423%2F";
這是我的正則表達式:
preg_match_all("#http:\/\/(.*?)[\s|\n]#is", $text, $m);
匹配前兩個網址,但如何我匹配最後一個嗎?我嘗試添加[\ s | \ n | $],但這也只能匹配前兩個網址。
沒有工作。不管什麼意思。我很確定這個模式總是有效的。 – hakre
@hakre它不符合第三個網址,只有前兩個。 –
在'()'中使用'|'而不是在'[]'中使用*或*。你試過了:'(\ s | \ n | $)'或'(?:\ s | \ n | $)'? ('?:'使得組不匹配) - 也可以爲'$ text'添加一個空格;) – hakre