我有两个变量:
$lang = hu
$image = image.jpg
如何在php中将image.jpg替换为image_hu.jpg?也许可以用str_replace实现?但是如何操作呢?
这种方法适用于任何文件类型,以及具有多个句点的图像名称。(演示)
代码
<?php
echo merge('image.test.1234.gif', '_en');
function merge($file, $language){
$ext = pathinfo($file, PATHINFO_EXTENSION);
$filename = str_replace('.'.$ext, '', $file).$language.'.'.$ext;
return ($filename);
}
?>
结果
image.test.1234_en.gif
使用preg_replace
会很好地工作:
$new_str = preg_replace('/(\.[^.]+)$/', sprintf('%s$1', $lang), $image);
image.test.png
会怎么样? - Dutchie432str_replace( '.', '_hu.', $image )
- Galen另一个选择是使用内置函数pathinfo,从文件名中分离文件扩展名。
$path_parts = pathinfo('image.jpg');
$final = $path_parts['filename'] . $lang . '.' . $path_parts['extension'];
$new_str = preg_replace( '/^(.*?)\.(\w+)$/', '${1}$lang.${2}', $image );
recent.image.jpg
,那么这个方法就会失效。结果会变成recent_hu.image.jpg
。 - stevecomrie'image.gift.1234.gif'
。 - raveren