0

私は次のタスクを達成する方法を理解するのに苦労しています」

から :http://www.example.com/main/this_dir/page.html

次の出力が欲しい:This Dir

使用$_SERVER['REQUEST_URI']すると、この出力を取得できます:

* / main / this_dir / *

それを取得して、2つの/の間の最後の文字列を削除したいので、最終的には

* this_dir *

次に、その文字列を取得して、に変換したいと思います

この監督

ディレクトリは/this_dir/ではなく/this/と呼ばれる可能性があるため、これにも少し複雑さがありますが、常にどちらか一方であり、テキストは変更されますが、私が使用した単語は単なる例です。

誰かがこのタスクをどのように達成できるかについての提案、入力、またはフィードバックがあれば、それは大いにありがたいです!request_uri文字列から最後のディレクトリ名を削除する方法については漠然とした考えがありますが、PHPを使用して、説明した方法で文字列を変換できるかどうかを知りたいと思います。

4

2 に答える 2

1

basename関数を使用して「this_dir」部分を取得できるため、次のようなことを行うだけです。

$directoryName = ucwords(str_replace('_', ' ', basename($_SERVER['REQUEST_URI'])));

編集

「/main/this_dir/something.php」などのページで機能するもう少し複雑な例:

$directoryName = ucwords(str_replace('_', ' ', basename(substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/')))));

これは、最後の「/」の後、パスする前に何かを削除して、basename以前と同じように機能することを確認します。ただし、「/ main / this_dir」のように末尾に「/」が付いていないURLの場合、これは機能しないことに注意してください。この場合、「Main」が出力されます。

于 2013-01-18T10:56:04.557 に答える
1
$path = explode("/", dirname($_SERVER['REQUEST_URI']));
$directory = end($path);

これにより、パスの最後のディレクトリが得られます。

次に、次のことができます。

$dirParts = explode("_", $directory);
$dirName = implode(" ", array_map("ucfirst", $dirParts));

ユーザーフレンドリーな形式でディレクトリ名を取得します。

編集:実際、RobMasterが言ったように、おそらくそれはより簡単ですucwords(str_replace("_", " ", $directory))

于 2013-01-18T11:05:21.990 に答える