如何将"_thumb"插入到动态生成的文件中.
例如,我有一个允许用户上传图像的网站.该脚本获取图像,对其进行优化并保存到文件中.如何让它为优化的图像插入字符串"_thumb"?
我目前正在保存1个版本的otpimized文件.CH-1268312613-photo.jpg
我想将原始文件保存为上面的字符串,但是想要追加"_thumb",如下面的字符串ch-1268312613-photo_thumb.jpg
Cha*_*rch 41
不需要使用正则表达式.这样做:
$extension_pos = strrpos($filename, '.'); // find position of the last dot, so where the extension starts
$thumb = substr($filename, 0, $extension_pos) . '_thumb' . substr($filename, $extension_pos);
Run Code Online (Sandbox Code Playgroud)
sal*_*the 15
也许一些与文件名相关的函数可能更容易使用,而不是采用正则表达式路由(或其他粗略的字符串操作):即pathinfo(获取文件扩展名)和basename(获取文件名减去扩展名).
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$thumb = basename($filename, ".$ext") . '_thumb.' . $ext;
Run Code Online (Sandbox Code Playgroud)
编辑:@tanascius对于非常相似的答案抱歉,我猜我应该在写这篇文章时检查一下这个小弹出窗口(这需要一段时间,我分心了).
为什么要使用正则表达式?是否总是扩展.jpg并且只有一个扩展?也许你可以用它代替_thumb.jpg?
如果不是那么简单,您可以使用类似pathinfo的函数来提取基本名称 + 扩展名并在那里进行替换。这也可以在没有正则表达式的情况下工作,这在这里可能有点矫枉过正:
$info = pathinfo( $file );
$no_extension = basename( $file, '.'.$info['extension'] );
echo $no_extension.'_thumb.'.$info['extension']
Run Code Online (Sandbox Code Playgroud)