我需要一个函数来检查字符串中的现有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