サーチ…


前書き

PHPをコーディングする際には、URLをいくつかに分割する必要がある場合があります。明らかに、あなたのニーズに応じて、それを行う方法は複数あります。この記事では、これらの方法を説明して、自分にとって最適なものを見つけることができます。

parse_url()を使用する

parse_url():この関数はURLを解析し、存在するURLのさまざまなコンポーネントのいずれかを含む連想配列を返します。

$url = parse_url('http://example.com/project/controller/action/param1/param2');

Array
(
    [scheme] => http
    [host] => example.com
    [path] => /project/controller/action/param1/param2
)

分離したパスが必要な場合は、explode

$url = parse_url('http://example.com/project/controller/action/param1/param2');
$url['sections'] = explode('/', $url['path']);

Array
(
    [scheme] => http
    [host] => example.com
    [path] => /project/controller/action/param1/param2
    [sections] => Array
        (
            [0] => 
            [1] => project
            [2] => controller
            [3] => action
            [4] => param1
            [5] => param2
        )

)

セクションの最後の部分が必要な場合は、次のようにend()を使用できます。

$last = end($url['sections']);

URLにGET値が含まれている場合は、それらも取得できます

$url = parse_url('http://example.com?var1=value1&var2=value2');

Array
(
    [scheme] => http
    [host] => example.com
    [query] => var1=value1&var2=value2
)

クエリのバールを分割する場合は、次のようにparse_str()を使用できます。

$url = parse_url('http://example.com?var1=value1&var2=value2');
parse_str($url['query'], $parts);

Array
(
    [var1] => value1
    [var2] => value2
)

explode()を使用すると、

explode():文字列の配列を返します。各文字列は、文字列区切り文字で形成された境界で分割して形成された文字列の部分文字列です。

この関数はかなり簡単です。

$url = "http://example.com/project/controller/action/param1/param2";
$parts = explode('/', $url);

Array
(
    [0] => http:
    [1] => 
    [2] => example.com
    [3] => project
    [4] => controller
    [5] => action
    [6] => param1
    [7] => param2
)

次のようにして、URLの最後の部分を取得できます。

$last = end($parts);
// Output: param2

また、sizeof()を次のような数学演算子と組み合わせて使うことで、配列の中を移動することもできます:

echo $parts[sizeof($parts)-2];
// Output: param1

basename()を使う

basename():ファイルまたはディレクトリへのパスを含む文字列を指定すると、この関数は末尾の名前コンポーネントを返します。

この関数は、URLの最後の部分だけを返します

$url = "http://example.com/project/controller/action/param1/param2";
$parts = basename($url);
// Output: param2

あなたのURLがそれ以上のものを持っていて、必要なものがファイルを含むdir名であれば、dirname()で以下のように使用できます:

$url = "http://example.com/project/controller/action/param1/param2/index.php";
$parts = basename(dirname($url));
// Output: param2


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow