php 正则查找 图片的src 并替换相应的src
在一串字符中查找图片src并替换成特定的src怎么输出正则匹配的结果,如:字符串:<p><imgheight="32"alt=""src="/TestDemo/Tpl/d...
在一串字符中查找图片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)一样。 我一时大意 写错 了。。 展开
怎么输出正则匹配的结果,
如:字符串:<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)一样。 我一时大意 写错 了。。 展开
1个回答
展开全部
/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);
/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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询