Sök…


Introduktion

När du kodar PHP kommer du sannolikt att få dig själv i en position där du behöver dela upp en URL i flera delar. Det finns uppenbarligen mer än ett sätt att göra det beroende på dina behov. Den här artikeln kommer att förklara dessa sätt för dig så att du kan hitta vad som fungerar bäst för dig.

Med parse_url ()

parse_url (): Den här funktionen analyserar en URL och returnerar en associerande matris som innehåller någon av de olika komponenterna i webbadressen som finns.

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

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

Om du behöver banan separerad kan du använda explodera

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

)

Om du behöver den sista delen av avsnittet kan du använda slutet () så här:

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

Om webbadressen innehåller GET vars kan du också hämta dem

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

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

Om du vill dela upp frågan kan du använda parse_str () så här:

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

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

Använda explode ()

explode (): Returnerar en rad strängar, som var och en är en substring av sträng som bildas genom att dela den på gränser som bildas av strängavgränsaren.

Denna funktion är ganska mycket framåt.

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

Du kan hämta den sista delen av webbadressen genom att göra detta:

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

Du kan också navigera i matrisen genom att använda sizeof () i kombination med en matematikoperatör som denna:

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

Använda basnamn ()

basnamn (): Givet en sträng som innehåller sökvägen till en fil eller katalog kommer den här funktionen att returnera efterföljande namnkomponent.

Denna funktion returnerar bara den sista delen av en URL

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

Om din URL har fler saker att göra och vad du behöver är dir-namnet som innehåller filen kan du använda den med dirname () så här:

$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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow