我有一个php系统上传图像并使用-med -slider等后缀文件名,具体取决于图像的大小。但是只有一个图像文件名被保存到数据库中,所以当我想显示一个图像并从数据库中调用文件名时,我会得到类似的东西,
filename-med.jpg如何更改,以便我可以用-slider替换-med?这可能吗?我不擅长正则表达式,我认为我必须使用它?
答案 0 :(得分:0)
使用像str_replace( '-med', '-slider', $file_name )
答案 1 :(得分:0)
str_replace("-med", "-slider", "filename-med.jpg");
答案 2 :(得分:0)
尝试:
$newFilename = str_replace("-med", "-slider", "filename-med.jpg"):
答案 3 :(得分:0)
这是微不足道的,你甚至不需要正则表达式来做到这一点。 str_replace(http://uk2.php.net/str_replace)函数就是您所需要的。
$old_filename = "foo-med.jpg"
$new_filename = str_replace('-med','-slider',$old_filename);
答案 4 :(得分:0)
我建议只存储图像的“文件名”部分,然后在运行时添加-med.jpg,-slider.jpg等。
但是 - 如果你更愿意坚持你所拥有的,只需使用:
$myFile = "filename-med.jpg";
echo str_replace('-med', '-slider', $myFile);
答案 5 :(得分:0)
不需要regexp,这太过分了。
我还会在haystack和替换字符串中包含“.jpg”,因为文件名可能已包含“-med”,例如“test-med-med.jpg”。
str_replace('-med.jpg', '-slider.jpg', $filename);
答案 6 :(得分:0)
在这种情况下,正则表达式不过度杀伤。
到目前为止提供的str_replace()
解决方案中,Capsule的答案是最好的,但即使这个也不能保证适用于所有可能的文件名。它在不太可能(但非常可能)的情况下失败,其中字符串'-med.jpg'嵌入在更大的文件名中:例如filename-med.jpg_updated.jpg
。如果文件名的扩展名为.jpeg
,它也会失败。
使用简单的正则表达式可轻松实现100%可靠的解决方案:
$re = '/-med\.(jpe?g|gif|png)$/mi';
$filename = preg_replace($re, '-slider.$1', $filename);
请注意,此解决方案也可轻松容纳其他类型的图像文件扩展名。