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

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


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


看这些脚本,


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

要么


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

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


这是字符串的例子


它将仅返回“ This” ...


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


怎么做到呢?


小怪兽爱吃肉
浏览 908回答 3
3回答

炎炎设计

试试这个:$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);因此,它匹配一个点,后跟三个或四个不是点或空格的字符。“ 3或4”规则可能应该放宽,因为存在许多较短或较长的文件扩展名。

猛跑小猪

在手册中,pathinfo:<?php&nbsp; &nbsp; $path_parts = pathinfo('/www/htdocs/index.html');&nbsp; &nbsp; echo $path_parts['dirname'], "\n";&nbsp; &nbsp; echo $path_parts['basename'], "\n";&nbsp; &nbsp; echo $path_parts['extension'], "\n";&nbsp; &nbsp; echo $path_parts['filename'], "\n"; // Since PHP 5.2.0?>它不一定是正常运行的完整路径。它将就像愉快地分析file.jpg的/path/to/my/file.jpg。
打开App,查看更多内容
随时随地看视频慕课网APP