php,将字符串添加到文件名
我有两个变量:php,将字符串添加到文件名,php,html,Php,Html,我有两个变量: $lang = hu $image = image.jpg 如何在php中将image.jpg替换为image_hu.jpg?也许用str_替换?但是怎么做呢 使用以下方法会很好: $new_str = preg_replace('/(\.[^.]+)$/', sprintf('%s$1', $lang), $image); 我将使用以下方法: $new_str = preg_replace( '/^(.*?)\.(\w+)$/', '${1}$lang.${2}', $i
$lang = hu
$image = image.jpg
如何在php中将image.jpg替换为image_hu.jpg?也许用str_替换?但是怎么做呢 使用以下方法会很好:
$new_str = preg_replace('/(\.[^.]+)$/', sprintf('%s$1', $lang), $image);
我将使用以下方法:
$new_str = preg_replace( '/^(.*?)\.(\w+)$/', '${1}$lang.${2}', $image );
这样,您的代码仍然适用于JPG/gif/jpeg/PNG/etc此方法适用于任何文件类型以及具有多个句点的图像名称。() 代码
<?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);
}
?>
另一个选项是使用内置函数将文件扩展名与文件名分开
$path_parts = pathinfo('image.jpg');
$final = $path_parts['filename'] . $lang . '.' . $path_parts['extension'];
注意-此代码仅适用于JPG。要获得更通用的方法,请尝试
explode()
@Duthcie432:或者您可以将regexp从“/\.jpg$/”更改为“/\.[a-z0-9]+$/”,并且它将适用于所有文件扩展名。这很公平。如果文件名有多个
,比如image.test.png
我确定文件名和扩展名,那么第一个示例对我有效。我编辑了这个问题:$lang没有“u”字符。我修改了第一个示例,这是可行的,但当我想使用更通用的版本“/\.jpg$/”到“/\.[a-z0-9]+$/”@Galen时,我需要修改的是-同样,这只适用于具有一个
的文件。因此,在这方面,它与公认的答案一样有效。如果出于某种原因,文件名中有一个额外的点,如:recent.image.jpg
,则此操作将失败。结果将是最近的_hu.image.jpg
很抱歉,您一定在更新之间发现了我。我认为这是一个比任何基于正则表达式的解决方案更具可读性的解决方案。
$path_parts = pathinfo('image.jpg');
$final = $path_parts['filename'] . $lang . '.' . $path_parts['extension'];