PHP str_replace()如何替换掉某个字符串中某个字符后缀其余不变

比如:图片地址,由于其中部分图片想保留带后缀(格式)有的不想带后缀(格式)该如何替换
图片1:http://aa.com/1.jpg
图片2:http://bb.com/2.jpg
图片3:http://cc.com/3.jpg
......
我想去掉图片3的图片后缀 .jpg ,图片1、2不变该如何替换,也就是只要遇到图片3这个cc.com域名的图片的格式 .jpg 去除其他不变(http://cc.com/3

第1个回答  2019-05-15
function x($arr,$replaceStr,$replaceStr2,$noReplace){
foreach($arr as $k=>$v){
if($v > $noReplace){//$noReplace如果大于数组键名替换,例如为3,则数组前四个不替换
$arr[$v] = str_replace($replaceStr,$replaceStr2,$arr[$k]);
}
}
return $arr;
}

使用:
x([
'http://a.com/a.jpg',
'http://b.com/b.jpg',
'http://c.com/c.jpg'
],'.jpg','',0);
返回:
[
'http://a.com/a',
'http://b.com/b.jpg',
'http://c.com/c.jpg'
]
第2个回答  2019-05-15
代码如下:

<?php 
function foreachDir($path){ 
$handle=opendir($path); 
if($handle){ 
while (false !== ($file = readdir($handle))) { 
if($file!="." && $file!='..'){ 
if(is_dir($path.$file)){ 
echo $path.$file."<br/>"; 
foreachDir($path.$file); 
}else{ 
echo "--".$path."/".$file."<br/>"; 
$ext = strripos($file,'.'); 
$aaa = substr($file,0,$ext); 
rename($path.'/'.$file,$path.'/'.$aaa.'.JPG'); 
// die(); 



return false; 


foreachDir('D:\xampp\htdocs\TNF2');追问

这个看不懂

追答

你搜下php替换文件后缀,网上很多

本回答被网友采纳
第3个回答  2019-05-15
分两步,第一步找到第三种,规则简单就strpos,难的就用正则找
第二步,如果是最后几个字符可以用字符串截取然后对比,匹配中,就截取全面的字符。具体规则依需求定追问

上面所有回答 strpos()这个比较适合我,通过判断比较执行,谢谢!

本回答被提问者采纳
第4个回答  2019-05-15
前面都回答的啥,正则加str_replace,代码如下
$string = "图片1:http://aa.com/1.jpg
图片2:http://bb.com/2.jpg
图片3:http://cc.com/3.jpg";
preg_match("/cc.com\/(.*)\.jpg/", $string, $rs);
$res = str_replace($rs[0],'cc.com/'.$rs[1],$string);
echo $res;exit;
第5个回答  2019-05-15