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