php通过关联替换文件扩展名
我已经设置了一个preg_replace,将.gz文件扩展名添加到图像文件名中。但是我需要关联地更改文件扩展名(以便bmp->bmp.gz、png->png.gz等)。我可以用什么来代替$old_扩展变量来实现这一点php通过关联替换文件扩展名,php,regex,preg-replace,Php,Regex,Preg Replace,我已经设置了一个preg_replace,将.gz文件扩展名添加到图像文件名中。但是我需要关联地更改文件扩展名(以便bmp->bmp.gz、png->png.gz等)。我可以用什么来代替$old_扩展变量来实现这一点 $new_file_ext = preg_replace('"\.(bmp|gif|png|jpg|jpeg)$"', '.' . $old_extension . '.gz', $filename ); 您需要反向引用组索引1中的字符。捕获组具有捕获所有角色的性质,这些角色由
$new_file_ext =
preg_replace('"\.(bmp|gif|png|jpg|jpeg)$"', '.' . $old_extension . '.gz', $filename );
您需要反向引用组索引1中的字符。捕获组具有捕获所有角色的性质,这些角色由这些组中存在的模式匹配。因此,在这里,捕获组中显示的模式是
bmp | gif | png | jpg | jpeg
。在替换部分中,我们可以通过指定组中的索引号(如\1
(指第一个捕获组))来引用这些字符
更好的方法是函数,它需要一个assoc数组,如下所示:
<?php
$trans = array("bpm" => "bpm.gz","jpg" => "jpg.gz");
echo strtr($filename, $trans);
?>
编辑: 为确保更换了分机,请按常规操作
$ext=explode('.',$filename)
$ext[key(end($ext))]=strtr($ext[key(end($ext))],$trans)代码>仅翻译扩展名
返回连接(“”,$ext)
李>
为什么不简单地将扩展附加到它
$new = $old.".gz";
非常感谢。这正是我需要的。还请欣赏regex101.com上的演示。我以前没见过。
$new = $old.".gz";