4

如果存在,我想从字符串末尾删除“.php”。考虑一下:

$filename = 'index';
rtrim($filename,".php");//returns "index"

$filename = 'search';
rtrim($filename,".php");//returns "searc"

为什么会这样?我觉得这与以字母'h'结尾有关 - 'h' 在 rtrim 的字符串中。所以我尝试了一个正则表达式 ( .php$) 来查看它是否有所作为,但它没有。

4

3 回答 3

9

rtrim接受一个字符列表作为第二个参数,因此在这种情况下,它不仅会修剪.php扩展名,还会修剪字符串其余部分中的任何.ph字符。

尝试preg_replace("/(.+)\.php$/", "$1", $filename);改用,或者basename($filename, '.php')如果您在服务器上有文件,而不仅仅是字符串。

于 2013-10-20T03:29:13.393 回答
2

to的第二个参数rtrim是一个带有字符列表的字符串。在这种情况下,它将剥离任何 P、H 和 。在你的字符串中,所以返回搜索。

于 2013-10-20T03:30:27.183 回答
1

如果你只是想删除扩展,为什么不使用这个: $filename = 'index.php'; $name = strstr($filename, '.', true);

于 2013-10-20T03:32:45.950 回答