PHP字符串部分替换并添加

比如图片链接:

http://aa.cc.com/dd/xxxxxx.jpg

如何才能批量替换为下面这样的:

http://bb.cc.com/dd/xxxxxx.jpg.png

xxxxx 为任意合法的链接字符串,且不用替换。

str_replace('http://aa.cc.com/dd/', 'http://bb.cc.com/dd/', $links);

类似上面这种是只能替换而不能在链接后面添加字符串吗?


批量替换前:
http://aa.cc.com/dd/1.jpg
http://aa.cc.com/dd/2.jpg
http://aa.cc.com/dd/3.jpg

我需要将 aa 替换为 bb , 然后在最后添加 .png

批量替换后:
http://bb.cc.com/dd/1.jpg.png
http://bb.cc.com/dd/2.jpg.png
http://bb.cc.com/dd/3.jpg.png

阅读 2.7k
3 个回答

你这描述,完全没看懂。。你就写一个输入是啥,输出是啥就可以了。最后一句话完全不知道你想干嘛?

<?php
$a = [
    "http://aa.cc.com/dd/1.jpg",
    "http://aa.cc.com/dd/2.jpg",
    "http://aa.cc.com/dd/3.jpg"
];

foreach($a as $k=> $v){
    $a[$k] = preg_replace('/(http:\/\/).*?(\..*?\..*)/',"\\1bb\\2.png",$v);
}

print_r($a);

output

Array
(
    [0] => http://bb.cc.com/dd/1.jpg.png
    [1] => http://bb.cc.com/dd/2.jpg.png
    [2] => http://bb.cc.com/dd/3.jpg.png
)

这样满足不?

$url = 'http://aa.cc.com/dd/1.jpg';

$nUrl = str_replace("http://aa","http://bb", $url) . '.png';

用正则匹配,在匹配的每个结果中先替换前面部分,后在最后添加字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题