php 通过关联替换文件扩展名
php replace file extension by association
我已经设置 preg_replace 来为图像文件名添加 .gz 文件扩展名。但是我需要关联地更改文件扩展名(以便 bmp -> bmp.gz、png -> png.gz 等)。我可以用什么代替 $old_extension 变量来执行此操作?
$new_file_ext =
preg_replace('"\.(bmp|gif|png|jpg|jpeg)$"', '.' . $old_extension . '.gz', $filename );
您需要反向引用组索引 1 中存在的字符。捕获组具有捕获与这些组中存在的模式匹配的所有字符的性质。所以这里捕获组中存在的模式是 bmp|gif|png|jpg|jpeg
。在替换部分,我们可以通过指定它的索引号来引用组中存在的那些字符,例如 </code> (指的是第一个捕获组)。</p>
<pre><code>preg_replace('~\.(bmp|gif|png|jpg|jpeg)$~', '..gz', $filename );
更好的方法是 strtr 函数,它需要一个关联数组,如下所示:
<?php
$trans = array("bpm" => "bpm.gz","jpg" => "jpg.gz");
echo strtr($filename, $trans);
?>
编辑:
确保替换扩展名,执行通常的操作
$ext = explode('.',$filename)
explode
$ext[key(end($ext))] = strtr($ext[key(end($ext))], $trans);
只翻译扩展名
- 内爆回来
return join('',$ext)
;
为什么不简单地附加扩展名呢?
$new = $old.".gz";
我已经设置 preg_replace 来为图像文件名添加 .gz 文件扩展名。但是我需要关联地更改文件扩展名(以便 bmp -> bmp.gz、png -> png.gz 等)。我可以用什么代替 $old_extension 变量来执行此操作?
$new_file_ext =
preg_replace('"\.(bmp|gif|png|jpg|jpeg)$"', '.' . $old_extension . '.gz', $filename );
您需要反向引用组索引 1 中存在的字符。捕获组具有捕获与这些组中存在的模式匹配的所有字符的性质。所以这里捕获组中存在的模式是 bmp|gif|png|jpg|jpeg
。在替换部分,我们可以通过指定它的索引号来引用组中存在的那些字符,例如 </code> (指的是第一个捕获组)。</p>
<pre><code>preg_replace('~\.(bmp|gif|png|jpg|jpeg)$~', '..gz', $filename );
更好的方法是 strtr 函数,它需要一个关联数组,如下所示:
<?php
$trans = array("bpm" => "bpm.gz","jpg" => "jpg.gz");
echo strtr($filename, $trans);
?>
编辑: 确保替换扩展名,执行通常的操作
$ext = explode('.',$filename)
explode$ext[key(end($ext))] = strtr($ext[key(end($ext))], $trans);
只翻译扩展名- 内爆回来
return join('',$ext)
;
为什么不简单地附加扩展名呢?
$new = $old.".gz";