很多站长朋友们都不太清楚php正则图片替换图片,今天小编就来给大家整理php正则图片替换图片,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php正则表达式替换图片地址 2、 php 正则查找 图片的src 并替换相应的src 3、 php中正则匹配img标签,并且替换了。 4、 php正则图片和表格替换的问题? 5、 php正则,想要替换图片中的title和alt这个表达式该怎么写呢 php正则表达式替换图片地址<?php
/*PHP正则提取图片img标记中的任意属性*/
$str = '<center><img src="/data/upload/help/202303/02/d513534cd0b172199963566d84b1fe24.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性</center>';
//1、取整个图片代码
preg_match('/<\s*img\s+[^>]*?src\s*=\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="/data/upload/help/202303/02/d513534cd0b172199963566d84b1fe24.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="/data/upload/help/202303/02/d513534cd0b172199963566d84b1fe24.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 正则查找 图片的src 并替换相应的src/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);
php中正则匹配img标签,并且替换了。你看看这个吧:
<?php
function change_str($string)
{
preg_match_all('|/data/upload/help/202303/02/01c03ee919b6d048b98dd66549752bfd.*)src="/data/upload/help/202303/02/01c03ee919b6d048b98dd66549752bfd.*)"/data/upload/help/202303/02/01c03ee919b6d048b98dd66549752bfd.*)|isU',$string,$main);
$newstring = "";
foreach($main[1] as $key => $value )
{
$newstring .= $value;
if (strpos($main[2][$key],".jpg") or strpos($main[2][$key],".gif") )
{
if ( strpos($main[2][$key],"http://") === false )
$main[2][$key] = "http://".$main[2][$key];
}
$newstring .= 'src="'.$main[2][$key].'"';
$newstring .= $main[3][$key];
}
return $newstring;
}
$mystr = "";//你的字符串;
echo change_str($mystr);
?>
php正则图片和表格替换的问题?看看给你举的例子是不是你要的结果。分三步:1,把所有关键字替换成超链接;2,把表格里被替换的关键字再换成原样;3,把图片里被替换的关键字再换成原样。这样正则就不用写的很复杂了。
//现在要把$str里的关键字abc换成超链接,table和img里的除外。
$str = 'wwwabcwww<table><tr><td><a href="1.php">abc</a></td></tr><tr><td><a href="2.php">abc</a></td></tr></table>wwwabcwww<img src="/data/upload/help/202303/02/f561aaf6ef0bf14d4208bb46a4ccb3ad."alt="abc"/>wwwabcwww<table><tr><td><a href="3.php">abc</a></td></tr><tr><td><a href="4.php">abc</a></td></tr></table>wwwabcwww<img src="/data/upload/help/202303/02/f561aaf6ef0bf14d4208bb46a4ccb3ad."alt="abc"/>wwwabcwww';
//把所有的关键字abc都替换成超链接,不管哪里的关键字。
$str_new = preg_replace('/abc/i', '<a href="888.php">abc</a>', $str);
//把table里被换成超链接的关键字再换回去
$pattern_table = '/<table>.*?<\/table>/i';
preg_match_all($pattern_table, $str_new, $arr);
foreach ($arr[0] as $val) {
$val = preg_replace('/<a href="888.php">abc<\/a>/i', 'abc', $val);
}
for ($i=0; $i<count($arr[0]); $i++) {
$pattern_table_arr[] = '/<table>.*?<\/table>/i';
}
$str_new = preg_replace($pattern_table_arr, $arr[0], $str_new, 1);
//把img里被换成超链接的关键字再换回去
$pattern_img = '/<img.*?>/i';
preg_match_all($pattern_img, $str_new, $arr);
foreach ($arr[0] as $val) {
$val = preg_replace('/<a href="888.php">abc<\/a>/i', 'abc', $val);
}
for ($i=0; $i<count($arr[0]); $i++) {
$pattern_img_arr[] = '/<img.*?>/i';
}
$str_new = preg_replace($pattern_img_arr, $arr[0], $str_new, 1);
//查看替换后的结果
echo htmlentities($str_new);
php正则,想要替换图片中的title和alt这个表达式该怎么写呢preg_replace('/title=\"[\w\.]+?\"/',$replace,$str); // alt替换同理
// 比如把title替换成 图片title
preg_replace('/title=\"[\w\.]+?\"/','title="图片title"',$str);
// 手写表达式,未测试,你可以自己调一下,应该差不多是这样
关于php正则图片替换图片的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php正则图片替换图片 php正则表达式验证url的详细内容...