永发信息网

php 正则查找 图片的src 并替换相应的src

答案:1  悬赏:70  手机版
解决时间 2021-03-05 00:30
  • 提问者网友:你给我的爱
  • 2021-03-04 20:48
在一串字符中查找图片src并替换成特定的src
怎么输出正则匹配的结果,
如:字符串:<p><img height="32" alt="" src="/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg" width="32" border="0" />来留言看看这的风景好吗 <img alt="" src="/TestDemo/Public/kindeditor/plugins/emoticons/13.gif" border="0" /></p>
正则匹配只匹配(1)/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg
不匹配(2)/TestDemo/Public/kindeditor/plugins/emoticons/13.gif这种。
就是只匹配图片上一级文件夹名是日期的 并替换成
(3)/TestDemo/Tpl/default/File/Uploads/2010_9_6/1283591048.jpg
把(1)种路径替换成(3)种

上面(3)路径也因该是全日期。。和(1)一样。 我一时大意 写错 了。。
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-03-04 21:46
/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg转
/TestDemo/Tpl/default/File/Uploads/2010_9_6/1283591048.jpg
根据你题目里面举例的这种对比的需求,转换条件认为是
“/Public/Files/全日期/数字.jpg”形式的图片转换成
“/File/Uploads/紧缩日期/数字.jpg”形式的图片。如果实际你的需求有所不同,可以根据这个略微对正则做修改。代码替换部分如下:

$str1 = "<p><img height=\"32\" alt=\"\" src=\"/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg\" width=\"32\" border=\"0\" />来留言看看这的风景好吗 <img alt=\"\" src=\"/TestDemo/Public/kindeditor/plugins/emoticons/13.gif\" border=\"0\" /></p><img height=\"32\" alt=\"\" src=\"/TestDemo/Tpl/default/Public/Files/2010_12_01/88668866.jpg\" width=\"32\" border=\"0\" />";
//这里多举一个图片例子试试
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_)[0]?(\d{1,2}_)[0]?(\d{1,2}\/\d+[.](?:jpg|gif|bmp)\")/","$1/File/Uploads$2$3$4$5",$str1);
?>
//规则有不同的话你可以这里对比修改下正则参数。good luck~

//----------------------------------------
既然需求少了那么多,就可以
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_\d{1,2}_\d{1,2}\/\d+[.](?:jpg|gif|bmp)\")/","$1/File/Uploads$2",$str1);
行了,如果对图片的格式限制不严格(严格点的就需要在尾巴那里罗列出来),可以再简化成
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_\d{1,2}_\d{1,2}\/\d+[.][a-zA-Z]+\")/","$1/File/Uploads$2",$str1);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯