Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie http_build_query und parse_str, um die gegenseitige Konvertierung von Abfragesträgern und Arrays zu implementieren

Verwenden Sie http_build_query und parse_str, um die gegenseitige Konvertierung von Abfragesträgern und Arrays zu implementieren

M66 2025-06-24

In der PHP -Entwicklung befassen wir uns häufig mit der gegenseitigen Konvertierung zwischen URL -Abfragen und Arrays. Beispielsweise werden die Daten, die über das Formular im vorderen Ende eingereicht wurden, in Form einer Abfragezeichenfolge an das hintere Ende übergeben, und während der Back -End -Verarbeitung ist es häufig erforderlich, sie in ein Array umzuwandeln, um die Daten zu manipulieren. Im Gegenteil, beim Erstellen der URL muss das Array zurück in die Abfragezeichenfolge umgewandelt werden.

PHP bietet uns zwei sehr bequeme Funktionen: http_build_query und parse_str, um diese Funktion zu implementieren.

1. Http_build_query: Array zu Abfragezeichenfolge

Die Funktion http_build_query kann ein Array in eine URL-kodierte Abfrage-Zeichenfolge umwandeln. Häufig verwendet, um Parameter für GET -Anforderungen zu konstruieren.

Grammatik:

 <span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$numeric_prefix</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>, ?</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$arg_separator</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$encoding_type</span></span><span> = PHP_QUERY_RFC1738)
</span></span>

Beispiel:

 <span><span><span class="hljs-variable">$params</span></span><span> = [
    </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Zhang San'</span></span><span>,
    </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">25</span></span><span>,
    </span><span><span class="hljs-string">'hobbies'</span></span><span> =&gt; [</span><span><span class="hljs-string">'reading'</span></span><span>, </span><span><span class="hljs-string">'coding'</span></span><span>]
];

</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span></span>

Ausgangsergebnis:

 <span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89&amp;age=</span><span><span class="hljs-number">25</span></span><span>&amp;hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading&amp;hobbies%5B1%5D=coding
</span></span>

Hinweis: Standardmäßig wird das Array in ein Indexformat wie Hobbys [0] = Lesen & Hobbys [1] = Codierung serialisiert.

Wenn Sie eine benutzerdefinierte Trennzeichen- oder Codierungsmethode benötigen, können Sie zusätzliche Parameter für die Steuerung verwenden. Ändern Sie beispielsweise den Trennzeichen in ein Semikolon:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">';'</span></span><span>);
</span></span>

Ausgangsergebnis:

 <span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89;age=</span><span><span class="hljs-number">25</span></span><span>;hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading;hobbies%5B1%5D=coding
</span></span>

2. PARSE_STR: Abfragebarstellung zum Array

Die Parse_str -Funktion kann URL -Abfragen in Arrays oder Variablen analysieren und wird häufig zum Analysieren von GET -Anforderungen oder benutzerdefinierten Zeichenfolgen verwendet.

Grammatik:

 <span><span><span class="hljs-keyword">void</span></span><span> </span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &amp;</span><span><span class="hljs-variable">$result</span></span><span>)
</span></span>

Beispiel:

 <span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">'name=%E5%BC%A0%E4%B8%89&amp;age=25&amp;hobbies%5B0%5D=reading&amp;hobbies%5B1%5D=coding'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>, </span><span><span class="hljs-variable">$output</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$output</span></span><span>);
</span></span>

Ausgangsergebnis:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [name] =&gt; Zhang San
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [hobbies] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [</span><span><span class="hljs-number">0</span></span><span>] =&gt; reading
            [</span><span><span class="hljs-number">1</span></span><span>] =&gt; coding
        )
)
</span></span>

HINWEIS: PARSE_STR ordnet dem aktuellen Bereich standardmäßig Variablen zu, und wenn der zweite Parameter nicht bereitgestellt wird, wird die Variable im aktuellen Bereich als variabler Name angezeigt, der in einigen Fällen zu Variablenüberschreibungen führen kann. Daher wird empfohlen, immer den zweiten Parameter als Ziel -Array anzugeben.

3. Praktische Anwendungsszenarien

  1. Front-End-Formularsimulation : Umgewandelt Arrays in Abfragebräge, simuliert Ertragsanfragen.

  2. URL Umschreiben und Sprung : Erstellen Sie Parameter beim Erstellen dynamischer URLs.

  3. Schnittstellenanforderung : Spleißparameter beim Senden der API -Anforderung.

  4. Parameter -Debugging -Tool : Wird zum Erstellen von Parameterzeichenfolgen oder zum Analysieren von Debugging -Renditen verwendet.

4. Zusammenfassung

Mit http_build_query und parse_str können wir uns leicht zwischen Arrays und URL -Abfragen umwandeln. Diese beiden Funktionen sind nicht nur einfach und einfach zu bedienen, sondern auch leistungsfähig. Sie sind unverzichtbare Werkzeuge für den Umgang mit Parameterübertragung in der täglichen PHP -Entwicklung. Das Mastering kann unsere Effizienz beim Umgang mit URL-Daten-Interaktionen erheblich verbessern.