問題
これは非常にわかりやすい質問です。
ユーザーに「http://example.com/path/filename.html」などの URL を送信してもらいます。
PHP のdirname()
関数を使用して、この URL のいわゆる「ベース」を取得しています。上記の例では、「http://example.com/path」になります。
ユーザーがこれを入力すると、私の問題が発生します。
http://example.com/blog
上記をブラウザに入力すると、「blog」というフォルダに index.php または .html ページが表示されます。ただし、PHPdirname()
は「http://example.com」のみを返します。
「ブログ」が拡張子のないファイルであると見なされるかどうかはわかりませんが、それが存在する場合、私は本当に解決策を見つけることができません.
私が試したこと
最初に、この簡単な方法を使用して URL の拡張子を取得しようとしました。
$url = 'http://example.com/index.php';
$file_extension = end(explode('.', $filename));
次に、 PHP を使用して拡張機能が存在するかどうかを確認しますempty()
。拡張子があれば、「http://example.com/path/file.html」のように、フォルダの後にファイル名が入力されたことを意味し、dirname()
完璧です。拡張子が存在しない場合は、ファイルが入力されておらず、パスの最後の項目がフォルダーであるため、既に「ベース」になっています。
ただし、単に「http://example.com/path/」の場合、上記はファイル拡張子として「.com/path/」を返しますが、これは存在しないことがわかっています。この場合、dirname()
関数を使用して「/path/」を切り捨てます。
編集:
ユーザーが「http://example.com」と入力すると「example.com」が返されるため、拡張子を取得しても機能しbasename($url)
ませんbasename()
。その拡張子はおそらく「.com」です。