【发布时间】:2014-04-21 22:34:52
【问题描述】:
我正在使用以下正则表达式来匹配 PHP 中所有类型的 URL(效果很好):
$reg_exUrl = "%\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))%s";
但现在,我想排除 Youtube、youtu.be 和 Vimeo URL:
研究后我正在做这样的事情,但它不起作用:
$reg_exUrl = "%\b(([\w-]+://?|www[.])(?!youtube|youtu|vimeo)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))%s";
我想这样做,因为我有另一个匹配 Youtube url 的正则表达式,它返回一个 iframe,这个正则表达式导致两个正则表达式之间的混淆。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
为什么不在第二步过滤掉不需要的域呢?甚至更好:第三步。第二步应该是 URL 规范化。然后它就非常简单而且更加健壮。
-
仅供参考,原来的答案很笼统,但我专门为您的情况添加了一个正则表达式。
-
感谢您的评论@hakre,但我对正则表达式不太了解,恰好我有一个评论系统,然后,我想做的是检测所有的url(到使用“href”)、标签(搜索)和 youtube 的 url(iframe)使它们可点击,当我从数据库中获取数据以最终显示给用户时,我必须同时执行所有这些操作。跨度>