4

私は小さな関数に取り組んでおり、URL を受け取り、それ自体が存在する場所に基づいて相対パスを返します。

URL のクエリ文字列にパスが含まれている場合、pathinfo正しくない結果が返されます。これは、以下のコードによって示されます。

$p = 'http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir/afile.txt';
$my_path_info = pathinfo($p);
echo $p . '<br/><pre>';
print_r($my_path_info);
echo '</pre>';

そのコードは次を出力します。

http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir/afile.txt

Array
(
    [dirname] => http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir
    [basename] => afile.txt
    [extension] => txt
    [filename] => afile
)

これは明らかに間違っています。回避策はありますか?

4

1 に答える 1

10

回避策はありますか?

ええ、正しくやっています;)

$url = urlencode('http://localhost/demos/some/dir/afile.txt');
$p = 'http://localhost/demos/image_editor/dir_adjuster.php?u='.$url;

URL、特にクエリ文字列を含む URL の場合parse_url()、パス コンポーネントを抽出する信頼性が高くなります。その後、そのpathinfo()上で実行します。

于 2010-06-10T10:17:39.837 に答える