正则表达式 - 如何在文件扩展名之前插入字符串

2022-08-30 15:32:39

如何将“_thumb”插入到按顺序生成的文件中。

例如,我有一个允许用户上传图像的网站。脚本获取图像,对其进行优化并保存到文件。如何让它插入字符串“_thumb”用于优化图像?

我目前正在保存 1 个版本的 otpimized 文件。ch-1268312613-照片.jpg

我想将原始字符串保存为上面的字符串,但要附加“_thumb”,如以下字符串ch-1268312613-photo_thumb.jpg


答案 1

无需使用正则表达式。这将这样做:

$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);

答案 2

与其采用正则表达式路由(或其他粗略的字符串操作),也许一些与文件名相关的函数可能更容易使用:即 pathinfo(获取文件扩展名)和 basename(获取文件名减去扩展名)。

$ext   = pathinfo($filename, PATHINFO_EXTENSION);
$thumb = basename($filename, ".$ext") . '_thumb.' . $ext;

编辑:@tanascius为非常相似的答案感到抱歉,我想我应该在写这篇文章时检查小弹出窗口(花了一段时间,我分心了)。


推荐