发布网友 发布时间:2022-04-06 04:42
共4个回答
懂视网 时间:2022-04-06 09:04
php正则表达式替换图片地址的方法:首先PHP正则提取图片img标记中的任意属性;然后提取width、height、src;最后PHP正则替换图片img标记中的任意属性。
php正则表达式替换图片地址的方法:
<?php /*PHP正则提取图片img标记中的任意属性*/ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性</center>'; //1、取整个图片代码 preg_match('/<s*imgs+[^>]*?srcs*=s*('|")(.*?)1[^>]*?/?s*>/i',$str,$match); echo $match[0]; //2、取width preg_match('/<img.+(width="?d*"?).+>/i',$str,$match); echo $match[1]; //3、取height preg_match('/<img.+(height="?d*"?).+>/i',$str,$match); echo $match[1]; //4、取src preg_match('/<img.+src="?(.+.(jpg|gif|bmp|bnp|png))"?.+>/i',$str,$match); echo $match[1]; /*PHP正则替换图片img标记中的任意属性*/ //1、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg") print preg_replace('/(<img.+src="?.+)(images/)(.+.(jpg|gif|bmp|bnp|png)"?.+>)/i',"${1}uc/images/${3}",$str); echo "<hr/>"; //2、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg",并省去宽和高 print preg_replace('/(<img).+(src="?.+)images/(.+.(jpg|gif|bmp|bnp|png)"?).+>/i',"${1} ${2}uc/images/${3}>",$str); ?>
相关学习推荐:php编程(视频)
热心网友 时间:2022-04-06 06:12
可以这样:
$image = "http://xxxxxxxxx.jpg"以上只是匹配jpg类型的图片
如果要匹配其他类型可以这样使用
preg_match("/(http:\/\/)?\w+\.(jpg|jpeg|gif|png)/",$image,$matches);
热心网友 时间:2022-04-06 07:30
$image = '<img src="/avatar/100/r6s1g11.jpg" />';网页上的图片都是使用IMG标签加载的,所以在匹配的时候是以 src=" 开始匹配,很多人会觉得为什么不是以 http:// 开始匹配,那是因为图片地址会有相对地址(如:"/xxx/xxx.jpg")和绝对地址(如:"http://www.xxx.com/xxx/xxx.jpg")两种情况,相对地址是没有 http:// 的,所以为了这两种情况都能匹配,故以 src=" 是最好的。
".*" 是匹配多个字符的意思,?号的意思是只匹配到第一个出现的jpg或jpeg、gif、png。
因为图片有很多格式类型,所以用"(jpg|jpeg|gif|png)"来匹配多个类型,"|"是或者的意思。
热心网友 时间:2022-04-06 09:04
$a = '<img alt="PHPimg" src="https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/reon/abpic/item/c1eb922389152670ac34de5d.jpg">';追问http://hiphotos.baidu.com/reon/abpic/item/c1eb922389152670ac34de5d.jpg;dsfsdf;http://hiphotos.baidu.com/reon/abpic/item/c1eb922389152670ac34de5d.jpg
不对啊,上面只有一条记录啊,要俩条才对的,前后覆盖了
追答如果是多条,用preg_match_all