我有两个变量:
$lang = hu
$image = image.jpg
如何在php中将image.jpg替换为image_hu.jpg?也许用str_replace?但是怎么样?
答案 0 :(得分:5)
此方法适用于任何文件类型,并且图像名称具有多个句点。 (DEMO)
<强>代码强>
<?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
答案 1 :(得分:2)
使用preg_replace
会很好用:
$new_str = preg_replace('/(\.[^.]+)$/', sprintf('%s$1', $lang), $image);
答案 2 :(得分:2)
我会使用以下内容:
$new_str = preg_replace( '/^(.*?)\.(\w+)$/', '${1}$lang.${2}', $image );
这样你的代码仍适用于JPG / gif / jpeg / PNG / etc
答案 3 :(得分:1)
另一种选择是使用内置函数pathinfo将文件扩展名与文件名分开。
$path_parts = pathinfo('image.jpg');
$final = $path_parts['filename'] . $lang . '.' . $path_parts['extension'];