一尘不染

如何从字符串中删除扩展名(仅实际扩展名!)

php

我正在寻找一个小的功能,该功能允许我从文件名中删除扩展名。

我通过谷歌搜索发现了许多示例,但是它们很糟糕,因为它们只是用“。”删除了字符串的一部分。。他们使用点作为限制器,只是剪切字符串。

看这些脚本,

$from = preg_replace('/\.[^.]+$/','',$from);

要么

 $from=substr($from, 0, (strlen ($from)) - (strlen (strrchr($filename,'.'))));

当我们添加这样的字符串时:

这是字符串的例子

它将仅返回“ This” …

该扩展名可以包含3个或4个字符,因此我们必须检查点是否位于4或5个位置,然后将其删除。

怎么做到呢?


阅读 272

收藏
2020-05-26

共1个答案

一尘不染

试试这个:

$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);

因此,它匹配一个点,后跟三个或四个不是点或空格的字符。“ 3或4”规则可能应该放宽,因为存在许多较短或较长的文件扩展名。

2020-05-26