我需要一個函數來檢查字符串中的現有URL。正則表達式匹配大多數URL需要改進
function linkcleaner($url) {
$regex="(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»「」‘’]))";
if(preg_match($regex, $url, $matches)) {
echo $matches[0];
}
}
正則表達式從John Gruber's blog,在那裏他討論創建一個正則表達式匹配的所有URL的問題而採取的。 不幸的是,我不能讓它工作。看起來問題來自正則表達式中的雙引號或表達式末尾的其他點符號。 任何幫助表示讚賞。 謝謝!
「不能使它工作「不是內置的PHP錯誤信息。 – 2012-03-28 16:38:25
@JackManey,roflmao – 2012-03-28 16:50:30
對不起,錯誤是「Parse error:syntax error,unexpected','在C:\ ... \ config.php on line ...」。英語不是我的母語,有時我解釋我想說的話有問題。 – olegb3 2012-03-28 17:06:51