php如何使用正则表达式匹配url图片啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php如何使用正则表达式匹配url图片啊相关的知识,希望对你有一定的参考价值。

格式为

http:xxxxxxxxxxxxxxxxxxxxxxxxx.jpg
谢谢啦

可以这样:

$image = "http://xxxxxxxxx.jpg"
preg_match("/(http:\\/\\/)?\\w+\\.jpg/",$image,$matches);//http://可要可不要
echo $matches[0];//$matches[0]即为匹配的图片路径

以上只是匹配jpg类型的图片

如果要匹配其他类型可以这样使用

preg_match("/(http:\\/\\/)?\\w+\\.(jpg|jpeg|gif|png)/",$image,$matches);
echo $matches[0];

参考技术A $image = '<img src="/avatar/100/r6s1g11.jpg" />';
preg_match('/src="(.*?(jpg|jpeg|gif|png))/', $image, $url);
echo $url[1];

网页上的图片都是使用IMG标签加载的,所以在匹配的时候是以 src=" 开始匹配,很多人会觉得为什么不是以 http:// 开始匹配,那是因为图片地址会有相对地址(如:"/xxx/xxx.jpg")和绝对地址(如:"http://www.xxx.com/xxx/xxx.jpg")两种情况,相对地址是没有 http:// 的,所以为了这两种情况都能匹配,故以 src=" 是最好的。

".*" 是匹配多个字符的意思,?号的意思是只匹配到第一个出现的jpg或jpeg、gif、png。

因为图片有很多格式类型,所以用"(jpg|jpeg|gif|png)"来匹配多个类型,"|"是或者的意思。

参考技术B $a = '<img alt="phpimg" src="https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/reon/abpic/item/c1eb922389152670ac34de5d.jpg">';
preg_match("/http\\:([^\\"\\']+)\\.jpg/i", $a, $m);
print_r($m);

追问

http://hiphotos.baidu.com/reon/abpic/item/c1eb922389152670ac34de5d.jpg;dsfsdf;http://hiphotos.baidu.com/reon/abpic/item/c1eb922389152670ac34de5d.jpg
不对啊,上面只有一条记录啊,要俩条才对的,前后覆盖了

追答

如果是多条,用preg_match_all

以上是关于php如何使用正则表达式匹配url图片啊的主要内容,如果未能解决你的问题,请参考以下文章

php正则匹配图片路径

php如何正则替换css中的图片路径?

php 正则表达式 url匹配

使用正则表达式匹配 PHP 中的 URL 模式

PHP程序中 用正则表达式匹配问题,如下,我要如何 把编辑人的 名字匹配出来,注意格式啊

PHP 正则表达式(正则表达式)匹配URL