删除部分基于文件名的前缀

时间:2018-02-20 10:04:24

标签: php regex wordpress

我有一个名为:

的文件

'SomePrefix _ ?????。JPG'

我试图在'SomePrefix_'字符串后删除部分文件名。

我知道前缀部分,但不知道其余部分。 如何从文件名中删除'SomePrefix_'之后的任何字符?

我也试着找到文件名:

$files = preg_grep('~^SomePrefix_' , scandir("/home/mydomain/public_html/wordpress/wp-content/uploads/2018/02/"));

但什么也没有回复。

如何删除基于文件名的前缀的末尾部分?

更新

预期产出:

假设我在服务器中有'SomePrefix_ copy(3)326 s.jpg'。

我想找到这个文件并将其重命名为'SomePrefix_.jpg'

1 个答案:

答案 0 :(得分:1)

您可以使用preg_filter解决方案:

$result = preg_filter('~^(SomePrefix_).*(\.jpe?g)$~', '$1$2', $files);

它只会返回匹配发生的已更改文件名。

请参阅regex demo

模式详情

  • ^ - 字符串开头
  • (SomePrefix_) - 第1组将前缀捕获为文字文本
  • .* - 除了换行符之外的任何0 +字符,尽可能多
  • (\.jpe?g) - 第2组:.jpeg.jpg
  • $ - 字符串结束。