如果存在,我想从字符串末尾删除“.php”。考虑一下:
$filename = 'index';
rtrim($filename,".php");//returns "index"
$filename = 'search';
rtrim($filename,".php");//returns "searc"
为什么会这样?我觉得这与以字母'h'结尾有关 - 'h' 在 rtrim 的字符串中。所以我尝试了一个正则表达式 ( .php$
) 来查看它是否有所作为,但它没有。
如果存在,我想从字符串末尾删除“.php”。考虑一下:
$filename = 'index';
rtrim($filename,".php");//returns "index"
$filename = 'search';
rtrim($filename,".php");//returns "searc"
为什么会这样?我觉得这与以字母'h'结尾有关 - 'h' 在 rtrim 的字符串中。所以我尝试了一个正则表达式 ( .php$
) 来查看它是否有所作为,但它没有。
rtrim
接受一个字符列表作为第二个参数,因此在这种情况下,它不仅会修剪.php
扩展名,还会修剪字符串其余部分中的任何.
、p
或h
字符。
尝试preg_replace("/(.+)\.php$/", "$1", $filename);
改用,或者basename($filename, '.php')
如果您在服务器上有文件,而不仅仅是字符串。
to的第二个参数rtrim
是一个带有字符列表的字符串。在这种情况下,它将剥离任何 P、H 和 。在你的字符串中,所以返回搜索。
如果你只是想删除扩展,为什么不使用这个: $filename = 'index.php'; $name = strstr($filename, '.', true);