2013-02-18 49 views
0

我想顯示只有大寫的文件名。 到目前爲止,我已經得到了這裏面的域的根目錄下完美的作品:僅顯示並大寫文件名而沒有路徑

$path = $_SERVER["SCRIPT_NAME"]; 
$path = str_replace('_', ' ', ($path)); 
$path = str_replace('/', '', ($path)); 
$path = ucwords($path); 

echo basename ($path,".php"); 

但是,如果我下來一兩個目錄,也返回路徑。

例子: /public_html/mydomain-com/one_two_three_four_five.php

結果: 一二三四五// PERFECT我想

例子: /public_html/mydomain-com/test/one_two_three_four_five.php

結果: Testone二三四五//不完美

例如: /public_html/mydomain-com/test/pathtest/one_two_three_four_five.php

結果: Testpathtestone二三四五//不完美

我無法弄清楚如何擺脫路徑,併到處去尋找一個答案,但無法找到任何東西,甚至接近。

此外,有沒有什麼東西可以適用於這兩種情況? (我希望)

回答

0

您可以使用類似這樣

$pos = strrpos($path, '/'); 
$path = substr($path, $pos); 
$path = str_replace('_', ' ', $path); 
$path = ucwords($path); 

這是什麼會做的是找到的/最後一次出現,並在那之後返回的字符串。腳本的其餘部分保持不變。

+0

謝謝 - 這工作的神奇! – floyd 2013-02-18 05:42:07

+0

好吧,現在當我有例如破折號而不是下劃線作爲分隔符時,它會產生500個內部錯誤。 任何人都知道什麼是錯的? – floyd 2013-02-19 08:37:47

+0

只需用'str_replace'中的破折號替換下劃線 – Achrome 2013-02-19 08:38:38

0

嘗試使用explode()函數將路徑拆分爲每個文件夾名和文件名,然後大寫數組的最後一個元素並打印出數組。

E.g:

$fields = explode('/', $path); 

$fields[count($fields)-1] = ucwords($fields[count($fields)-1]); 
$new_path = ""; 
foreach($fields as $field) { 
    $new_path .= $field . ' '; 
} 

$new_path = str_replace('_', ' ', $new_path); 
相關問題