2013-10-20 49 views
2

我想從字符串末尾刪除「.php」(如果存在)。考慮這個:PHP rtrim「.php」

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

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

爲什麼會發生這種情況?我覺得這與以'rtrim'字符串中的字母'h' - 'h'結尾有關。所以我嘗試了一個正則表達式(.php$),看它是否有所作爲,但它沒有。

+0

改爲使用'basename($ filename,'.php')'或路徑名()函數 –

回答

7

rtrim接受字符作爲第二個參數的名單,所以在這種情況下,將修剪不只是.php擴展,但任何.p,或h在字符串的其餘部分中的字符。

請嘗試使用preg_replace("/(.+)\.php$/", "$1", $filename);替代,或者basename($filename, '.php')如果您在服務器上有文件,而不是在字符串中。

+1

謝謝。我對通常只用於空格的rtrim的誤解。感謝您爲此付出額外的努力,併爲我提供preg_replace。 – Joao

2

rtrim的第二個參數是一個帶有字符列表的字符串。在這種情況下,它將剝離任何P,H和。在你的字符串中,所以返回searc。

1

如果你只是想刪除擴展名,爲什麼不使用這個: $ filename ='index.php'; $ name = strstr($ filename,'。',true);