In PHP sind Parse_str und MB_PARSE_STR Funktionen, die zur Analyse von URL-kodierten Abfragesteichen verwendet und in Variablen umgewandelt werden. Obwohl die beiden Funktionen ähnlich sind, gibt es einige wichtige Unterschiede zwischen ihnen, insbesondere zur Unterstützung von Multibyte -Charaktersätzen (wie Chinesen, Japanisch usw.). In diesem Artikel werden ihre Unterschiede und Nutzungsszenarien im Detail erörtert.
Parse_str ist eine häufig verwendete Funktion in PHP, die eine URL-kodierte Abfragezeichenfolge analysiert und in eine PHP-Variable umwandelt. Die Syntax ist wie folgt:
<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">$str</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">void</span></span><span>
</span></span>
Parameter :
$ str : Die URL -Codierungsabfrage -Zeichenfolge, die analysiert werden soll.
$ array (optional): Wenn dieser Parameter bereitgestellt wird, werden die Auflösungsergebnisse in Form eines assoziativen Arrays gespeichert.
Rückgabewert :
Diese Funktion gibt keinen Wert zurück und ändert den Parameter $ array direkt durch Referenz oder ordnet eine globale Variable zu.
Beispiel :
<span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"name=John&age=25&city=NewYork"</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>
Ausgabe :
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => John
[age] => </span><span><span class="hljs-number">25</span></span><span>
[city] => NewYork
)
</span></span>
MB_PARSE_STR ist eine Funktion, die durch die Multibyte-String-Erweiterung ( Mbstring ) bereitgestellt wird, die Parse_str ähnelt. Der Unterschied besteht jedoch darin, dass es korrekte Multibyte-Zeichensätze (z. B. UTF-8-kodierte chinesische Zeichen) verarbeiten kann. Die Syntax ist Parse_str sehr ähnlich:
<span><span><span class="hljs-title function_ invoke__">mb_parse_str</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">void</span></span><span>
</span></span>
Parameter :
$ str : Die von URL codierte Abfrage -Zeichenfolge soll analysiert werden, normalerweise eine multibyte -Zeichenset -Zeichenfolge.
$ array (optional): Die analysierten Ergebnisse werden in diesem assoziativen Array gespeichert.
Rückgabewert :
Gleich wie Parse_SR gibt MB_PARSE_STR auch keinen Wert zurück, der das Parsen -Ergebnis zurückgibt, indem der Parameter $ array verweist.
Beispiel :
<span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"name=Zhang San&age=25&city=Peking"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">mb_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>
Ausgabe :
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => Zhang San
[age] => </span><span><span class="hljs-number">25</span></span><span>
[city] => Peking
)
</span></span>
Multibyte -Charakterunterstützung :
Parse_str ist für Single-Byte-Zeichensets (wie ISO-8859-1, GBK) konzipiert, und es wird ein verstümmeltes Problem für Multi-Byte-Charaktere (wie Chinesisch, Japanisch, Koreanisch usw.).
MB_PARSE_STR ist Teil der Multibyte-Zeichenerweiterung, die die Zeichenfolgen von Multibyte-Zeichensätzen korrekt behandelt, sodass MB_PARSE_STR zuverlässiger ist als PARSE_STR , wenn Abfragestiere mit Nicht-ASCII-Zeichen analysiert werden.
Zeichensatzverarbeitung :
Parse_Str verarbeitet keine Multibyte-Zeichensätze. Wenn die Abfragezeichenfolge chinesische oder andere Nicht-ASCII-Zeichen enthält, können die Parsing-Ergebnisse verstümmelt werden.
MB_PARSE_STR eignet sich für Multi-Byte-Codierungszeichenfolgen wie UTF-8, was sicherstellt, dass Zeichen während des Parsens korrekt sind.
Leistung :
Parse_str ist eine PHP-integrierte Funktion mit guter Leistung und eignet sich für einfache Single-Byte-Zeichen-Set-Abfragebräge.
MB_PARSE_STR ist Teil der Mbtring -Erweiterung, die nicht verfügbar ist, wenn der Server nicht über Mbstring installiert ist und normalerweise etwas langsamer ist, da eine zusätzliche Verarbeitung von Multibyte -Zeichen erforderlich ist.
Verwenden Sie Parse_str :
Wenn die von Ihnen verarbeitende URL-Abfrage-Zeichenfolge nur ASCII-Zeichen oder Single-Byte-Zeichen enthält, ist Parse_str die beste Wahl. Es ist einfach und effizient und für Englisch oder andere Szenarien geeignet, die nur Einzelbyte-Zeichen enthalten.
Verwenden von MB_PARSE_STR :
MB_PARSE_STR ist erforderlich, wenn die von Ihnen verarbeitete URL -Abfrage -Zeichenfolge Multibyte -Zeichen (wie Chinesen, Japanisch usw.) enthält. Es kann diese Charaktere richtig analysieren und verstümmelte Probleme vermeiden.
Parse_str ist eine Standard-Parse-Funktion für Einzelbyte-Zeichensätze, die für Fälle geeignet ist, in denen kein spezielles oder multi-byte-Zeichen vorhanden ist.
MB_PARSE_STR ist eine Funktion, die durch eine Multi-Byte-String-Erweiterung bereitgestellt wird, die speziell zur Verarbeitung von Abfragesträgern verwendet wird, die Multi-Byte-Zeichensätze (wie Chinesisch, Japanisch usw.) enthalten.
Durch die Auswahl der entsprechenden Funktion gemäß der tatsächlichen Situation kann die Richtigkeit und Effizienz des Programms bei der Verarbeitung von Abfragesträgern sichergestellt werden. Wenn die Anwendung mehrsprachige Unterstützung beinhaltet oder Nicht-ASCII-Zeichen verarbeiten muss, wird empfohlen, mb_parse_str zu verwenden.