仅显示文件名并将其大写,不带路径

时间:2013-02-18 01:17:28

标签: php

我正在尝试仅显示大写文件名。 我已经知道了这一点,它完全适用于域的根目录:

$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

结果: 一二三四五//完美我想要的东西

实施例: /public_html/mydomain-com/test/one_two_three_four_five.php

结果: Testone Two Three Four Five //不完美

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

结果: Testpathtestone两个三四五//不完美

我无法弄清楚如何摆脱这条路,并在各地寻找答案但却找不到任何接近的东西。

此外,是否有适用于其中一种/两种情况的内容? (我希望)

2 个答案:

答案 0 :(得分:0)

尝试使用explode()函数将路径拆分为每个foldername和filename,然后大写数组的最后一个元素并打印出数组。

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);

答案 1 :(得分:0)

你可以使用这样的东西

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

这样做会找到/的最后一次出现,然后返回子串。脚本的其余部分保持不变。