Analysieren Sie die Abfragezeichenfolge in ein Array

Lesezeit: 6 Minuten

Analysieren Sie die Abfragezeichenfolge in ein Array
Laufen

Wie kann ich ein drehen Schnur unten in ein Reihe?

pg_id=2&parent_id=2&document&video 

Dies ist das Array, das ich suche,

array(
    'pg_id' => 2,
    'parent_id' => 2,
    'document' => ,
    'video' =>
)

  • Die Dokumentation für parse_str() erklärt es nicht gut. Das ist besser (meine Betonung): “Ohne das zweite Argument für parse_str() würden die Parameter der Abfragezeichenfolge Füllen Sie die lokale Symboltabelle. Angesichts der daraus resultierenden Auswirkungen auf die Sicherheit ist die Verwendung von parse_str() ohne ein zweites Argument jetzt veraltet.”

    – Peter Mortensen

    19. September 2021 um 19:51 Uhr


1646923449 905 Analysieren Sie die Abfragezeichenfolge in ein Array
Antonius

Du willst die parse_str -Funktion, und Sie müssen den zweiten Parameter festlegen, damit die Daten in einem Array anstatt in einzelnen Variablen abgelegt werden.

$get_string = "pg_id=2&parent_id=2&document&video";

parse_str($get_string, $get_array);

print_r($get_array);

  • Ich habe ein Problem mit dieser Antwort, weil es nicht funktioniert, wenn Sie denselben Schlüssel mehrmals verwenden (ja, weil Schlüssel in PHP-Arrays eindeutig sind). Damit ?key=lorem&key=ipsum wird darin enden, dass array(["key"]=>"ipsum") Die Frage ist, gibt es eine Funktion, um etw. so was array(["key"]=>array("lorem", "ipsum")) oder muss ich diese Funktion selbst erstellen?

    – MaBi

    1. März 2015 um 18:54 Uhr


  • Technisch würde PHP das auch behandeln ?key=lorem&key=ipsum als ob Sie nur zur Verfügung gestellt hätten key=ipsum wenn das die Abfragezeichenfolge auf der URL wäre. Und ich denke, es wird als ungültig angesehen, den Schlüssel wiederzuverwenden und konsistente Ergebnisse zu erwarten oder dass alle Instanzen des Schlüssels beibehalten werden. Der gültige Ansatz, zumindest für eine an PHP gesendete Abfragezeichenfolge, wäre ?key[]=lorem&key[]=ipsumsodass Ihr selbst entwickelter Ansatz nach Vorkommen von suchen könnte &{x}= wo x mehr als einmal vorkommt und durch ersetzen x[] (und ? genauso behandeln wie &)

    – Antonius

    11. Juni 2015 um 7:23 Uhr

  • @Mabi – oh, und schau, jemand anderes stimmt dir zu und hat bereits seine eigene Funktion erstellt – php.net/manual/en/function.parse-str.php#76792

    – Antonius

    11. Juni 2015 um 7:31 Uhr

  • Das war hilfreich! Ich habe mich entschieden, es so zu machen ?key[]=lorem&key[]=ipsum vor einigen wochen. Aber danke fürs Teilen des Links!

    – MaBi

    12. Juni 2015 um 4:58 Uhr


  • Etwas, auf das Sie achten sollten, sind Zeichenfolgen, die ein „+“ enthalten, wie z. B. myemail+alias@gmail.com. Diese werden von parse_str in ein Leerzeichen geparst. key=myemail alias@gmail.com.

    – Kerl

    26. August 2016 um 23:41 Uhr

Analysieren Sie die Abfragezeichenfolge in ein Array
yassine2020

Manchmal parse_str() allein notengenau ist, könnte es zum Beispiel anzeigen:

$url = "somepage?id=123&lang=gr&size=300";

parse_str() würde zurückgeben:

Array ( 
    [somepage?id] => 123 
    [lang] => gr 
    [size] => 300 
)

Kombinieren wäre besser parse_str() mit parse_url() so:

$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );

  • Ich denke, es erwartet $_SERVER['QUERY_STRING']

    – CpILL

    19. Dezember 2017 um 19:17 Uhr

  • Wie Array zu String-URL ex. : Array ( [somepage?id] => 123 [lang] => Gr [size] => 300 ) Ausgabe = irgendeine Seite?id=123&lang=gr&size=300

    – Mehul Velani

    28. Juni 2019 um 12:09 Uhr


Verwenden parse_str().

$str="pg_id=2&parent_id=2&document&video";
parse_str($str, $arr);
print_r($arr);

  • Fügen Sie vielleicht etwas über die Ablehnung bestimmter Verwendungen von hinzu parse_str? (Aber ohne “Bearbeiten:”, “Aktualisieren:” oder ähnliches – die Antwort sollte so aussehen, als wäre sie heute geschrieben).

    – Peter Mortensen

    19. September 2021 um 19:33 Uhr


Wenn Sie aufgrund von codierten kaufmännischen Und-Zeichen ein Problem beim Konvertieren einer Abfragezeichenfolge in ein Array haben

&

dann unbedingt verwenden html_entity_decode

Beispiel:

// Input string //
$input="pg_id=2&parent_id=2&document&video";

// Parse //
parse_str(html_entity_decode($input), $out);

// Output of $out //
array(
  'pg_id' => 2,
  'parent_id' => 2,
  'document' => ,
  'video' =>
)

1646923449 229 Analysieren Sie die Abfragezeichenfolge in ein Array
Ionut Bajescu

Verwenden http://us1.php.net/parse_str

Achtung, seine Verwendung ist:

parse_str($str, &$array);

nicht

$array = parse_str($str);

Bitte beachten Sie, dass die oben gilt nur für PHP-Version 5.3 und früher. Call-Time Pass-by-Reference wurde in PHP 5.4 entfernt.

  • Es ist ` parse_str($str, $arr);` und nicht parse_str($str,&$arr); schlimmer Fehler

    Benutzer8241064

    5. Juli 2017 um 0:12 Uhr


  • Das ist “&$arr” vs. “$arr” (& Unterschied).

    – Peter Mortensen

    19. September 2021 um 19:23 Uhr

  • @ user8241064: Sind das nicht nur die formalen Parameter? (Ja, Sie haben das Gebäude verlassen, aber vielleicht kann sich noch jemand melden?)

    – Peter Mortensen

    19. September 2021 um 19:38 Uhr

  • @pushrbx: Es ist nicht klar, was für spätere Versionen von PHP (oder alle Versionen von PHP) verwendet werden sollte. Es ist, als würdest du vorschlagen nichts gilt für spätere Versionen von PHP (das ist wahrscheinlich nicht der Fall oder was Sie meinten). Könntest Du das erläutern? Es ist wahrscheinlich am besten, hier zuerst Kommentare abzugeben, bevor Sie eine weitere Bearbeitung vorschlagen.

    – Peter Mortensen

    19. September 2021 um 19:41 Uhr


  • @PeterMortensen Ich habe meine Bearbeitung unter der Annahme vorgenommen, dass der Leser weiß, was mit “Call-Time Pass by Reference” gemeint ist und dass es entfernt wurde. Ich meinte, dass die korrekte Syntax wäre parse_str($str, $array); anstatt parse_str($str, &$array); in zukünftigen Versionen von PHP. Auch nach den SO-Richtlinien sollte diese Information meiner Meinung nach vorhanden sein.

    – pushrbx

    27. September 2021 um 10:43 Uhr

1646923450 912 Analysieren Sie die Abfragezeichenfolge in ein Array
Peter Mortensen

Es gibt mehrere mögliche Methoden, aber für Sie gibt es bereits eine eingebaute parse_str Funktion:

$array = array();
parse_str($string, $array);
var_dump($array);

  • Es ist ` parse_str($str, $arr);` und nicht parse_str($str,&$arr); schlimmer Fehler

    Benutzer8241064

    5. Juli 2017 um 0:12 Uhr


  • Das ist “&$arr” vs. “$arr” (& Unterschied).

    – Peter Mortensen

    19. September 2021 um 19:23 Uhr

  • @ user8241064: Sind das nicht nur die formalen Parameter? (Ja, Sie haben das Gebäude verlassen, aber vielleicht kann sich noch jemand melden?)

    – Peter Mortensen

    19. September 2021 um 19:38 Uhr

  • @pushrbx: Es ist nicht klar, was für spätere Versionen von PHP (oder alle Versionen von PHP) verwendet werden sollte. Es ist, als würdest du vorschlagen nichts gilt für spätere Versionen von PHP (das ist wahrscheinlich nicht der Fall oder was Sie meinten). Könntest Du das erläutern? Es ist wahrscheinlich am besten, hier zuerst Kommentare abzugeben, bevor Sie eine weitere Bearbeitung vorschlagen.

    – Peter Mortensen

    19. September 2021 um 19:41 Uhr


  • @PeterMortensen Ich habe meine Bearbeitung unter der Annahme vorgenommen, dass der Leser weiß, was mit “Call-Time Pass by Reference” gemeint ist und dass es entfernt wurde. Ich meinte, dass die korrekte Syntax wäre parse_str($str, $array); anstatt parse_str($str, &$array); in zukünftigen Versionen von PHP. Auch nach den SO-Richtlinien sollte diese Information meiner Meinung nach vorhanden sein.

    – pushrbx

    27. September 2021 um 10:43 Uhr

1646923450 912 Analysieren Sie die Abfragezeichenfolge in ein Array
Peter Mortensen

Dies ist ein Einzeiler zum Parsen einer Abfrage von der aktuellen URL in ein Array:

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

988240cookie-checkAnalysieren Sie die Abfragezeichenfolge in ein Array

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

Privacy policy