PHP-URL zum Array

Lesezeit: 3 Minuten

Erics Benutzeravatar
erich

Ich habe diese URLs von a Weblog:

http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54
http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97

Wie kann ich diese URL in ein Array in PHP umwandeln, damit ich ein Array wie dieses habe

array(
 'page' => array(
   's' => 194,
   'client' => 151678
   'm' => 'a4a',
   'v' => 1,
   'g' => 54
 )
 etc..
)

dann kann ich später zu diesem Array schleifen, um Duplikate zu finden oder die Informationen korrekt zu validieren.

Benutzeravatar von Oldskool
Alte Schule

PHP hat dafür eine native Funktion, die parse_str Funktion. Sie können es wie folgt verwenden:

parse_str($_SERVER['QUERY_STRING'], $outputArray);

Dies wird genau das tun, was Sie brauchen.

  • Dies ist die bevorzugte Methode, da sie alle Standardzeichenfolgen unterstützt, die durch & und = getrennt werden. Funktioniert auch hervorragend für Curl-Antworten

    – Dss

    21. November 2013 um 14:37 Uhr

Es gibt vielleicht einen besseren Weg, dies zu tun, aber das ist, was ich mir ausgedacht habe.

<?php

    $url="http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54";
    $remove_http = str_replace('http://', '', $url);
    $split_url = explode('?', $remove_http);
    $get_page_name = explode("https://stackoverflow.com/", $split_url[0]);
    $page_name = $get_page_name[1];

    $split_parameters = explode('&', $split_url[1]);

    for($i = 0; $i < count($split_parameters); $i++) {
        $final_split = explode('=', $split_parameters[$i]);
        $split_complete[$page_name][$final_split[0]] = $final_split[1];
    }

    var_dump($split_complete);

?>

http://codepad.org/xTsAks46

Benutzeravatar von matzino
Matzino

Mit parse_url() Sie können die URL in ein assoziatives Array parsen. Im Ergebnisarray erhalten Sie unter anderem den Abfrageteil. Dann können Sie verwenden parse_str() zum Analysieren des Abfrageteils in Ihr neues Array.

Benutzeravatar von Kostas Andrianopoulos
Kostas Andrianopoulos

Ausgehend von Ihrer Frage wird dieser Weg immer sein /pagedarf das Array mit den geparsten URLs nicht mehrere haben page Indizes, daher sollten Sie numerische Indizes verwenden.

Versuche dies:

$urls_parsed = array();
foreach ($url_strings as $url_string) {
    $url = parse_url($url_string);
    $urls_parsed[] = parse_str($url['query']);
}

$url_strings ist ein Array, das alle URLs enthält, die Sie im Zeichenfolgenformat analysieren möchten.
$urls_parsed ist das resultierende Array, das die URLs enthält, die in dem von Ihnen angeforderten Format analysiert wurden.

Verwenden Sie die parse_url-Funktion wie

<?php
$url="http://username:[email protected]/path?arg=value#anchor";
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>

Dadurch erhalten Sie die folgende Array-Ausgabe

Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

Und von der Abfrage aus können Sie sie leicht in (Schlüssel, Wert)-Paare aufteilen. Hoffe das hilft.:)

Benutzeravatar von Nicola Peluchetti
Nicola Peluchetti

Du könntest es tun:

function convertUrlToArray($url){
    $url = str_replace("http://www.domain.com/page?", "", $url);
    $urlExploded =  explode("&", $url);
    $return = array();
    foreach ($urlExploded as $param){
        $explodedPar = explode("=", $param);
         $return[$explodedPar[0]] = $explodedPar[1];
    }
    return $return;

}

$url1 = convertUrlToArray("http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97");
var_dump($url1);

Beispiel hier http://codepad.org/KIDKPzaU

1439800cookie-checkPHP-URL zum Array

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy