Heim >Backend-Entwicklung >PHP-Tutorial >有没有匹配url但除了图片之外的正则表达式?

有没有匹配url但除了图片之外的正则表达式?

WBOY
WBOYOriginal
2016-06-23 14:04:431087Durchsuche

例如http://www.abc.com/和http://www.abc.com/images/index.php都能匹配,
但http://www.abc.com/images/logo.gif就不能匹配。
我写的表达式会匹配到http://www.abc.com/images/logo.这段

(http\://)?([a-z0-9_-]+\.)+(com|net|cn|org){1}(\/[a-z0-9_-]+)*\.?(?!jpg|jpeg|gif|png|bmp)


回复讨论(解决方案)

一般url后面都有其他不相关字符,建议你利用这个字符
例如:
"http://www.abc.com/images/logo.gif"
...前略(?!:jpg|jpeg|gif|png|bmp) (?:")

刚才没有测试环境,随意写的,想想有点问题,找了个环境重新写了一个

$s='http://www.abc.com/image/index.php"http://www.abc.com/images/logo.gif"';
preg_match_all('#/[^/]*(? var_export($m);

大致吧,你自己理解一下再修改来用
这里\....匹配圆点和三字符的扩展名,没有圆点扩展名或者不是三个字符的情况自己摸索吧

刚才没有测试环境,随意写的,想想有点问题,找了个环境重新写了一个

$s='http://www.abc.com/image/index.php"http://www.abc.com/images/logo.gif"';
preg_match_all('#/[^/]*(? var_exp……

嗯,有道理,html的图片都是带有标签的,不过还有一种情况就是bbcode的代码,还好也是带有标签的,能不能帮我写这个完整的表达式?我下面举例给你看看,

[img=88,31]http://www.discuz.net/images/logo.gif[/img]


匹配除了上面两种情况的所有url地址,谢谢!!!

晕,不能编辑帖子,上面第一行代码其实也是bbcode来的,就是第二行没有 =88,31 这段,论坛把它转成html了

其实你是想要匹配超链接地址,前面加上href就好匹配了。

(?i)(?:https?|ftp)://[-a-z\d.]+/?(?!/)([-a-z\d+&@#%=~_|!:,.;]+/)*(?#去掉图片的URl)(?![-a-z\d+&@#%=~_!,.;].*?\.(?:jpg|jpeg|gif|png|bmp))[-a-z\d+&@#%=~_!,.;]*(?:\?[a-z\d+&@#/%=~_|!:,.;]*)?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn