Php,如何在星号后删除字符并在文件扩展名处停止

时间:2016-12-14 22:18:50

标签: php mysql regex sql-update

我在MYSQL数据库中有以下图像,我想搜索并替换模式后面的所有出现(包括星号*在内的所有内容都必须保留,但文件扩展名需要保留 - *之后的字符数变化,对于扩展名也一样。) 感谢您的帮助!

这就是我所拥有的:

mo051316hires-5 * 100xx2304-2304-576-0.jpg

brandicourt-光高分辨率-1 * 100xx3264-3264-816-0.gif

这就是我想要的:

mo051316hires-5.JPG

brandicourt-光高分辨率-1.gif

2 个答案:

答案 0 :(得分:1)

像这样使用preg_replace()

$newFileName = preg_replace('/\*[^.]+/', '', $oldFileName);

这会查找文字*\*)和一个或多个非句点字符([^.]+),并用空字符串替换它们。

3v4l.org demo

答案 1 :(得分:1)

使用MySQL修复现有数据:

试试这个:

SELECT CONCAT(
            SUBSTRING_INDEX(col, '*', 1),
            '.',
            SUBSTRING_INDEX(col, '.', -1)
    FROM ...

如果看起来不错,请将其放入

UPDATE ...
    SET col = CONCAT ...