Position actuelle: Accueil> Derniers articles> Quelle est la différence entre MB_Parse_Str et Parse_Str? Dans quelles circonstances sont la plus applicables?

Quelle est la différence entre MB_Parse_Str et Parse_Str? Dans quelles circonstances sont la plus applicables?

gitbox 2025-07-26

Dans PHP, PARSE_STR et MB_PARSE_STR sont des fonctions utilisées pour analyser les chaînes de requête codées par URL et les convertir en variables. Bien que les deux fonctions soient similaires, il existe des différences clés entre elles, en particulier à l'appui des jeux de caractères multi -yte (comme le chinois, le japonais, etc.). Cet article discutera en détail de leurs différences et d'utilisation en détail.

1. Introduction à la fonction PARSE_STR

PARSE_STR est une fonction couramment utilisée en PHP qui analyse une chaîne de requête codée par URL et la convertit en une variable PHP. La syntaxe est la suivante:

 <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> &amp;</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>
  • Paramètre :

    • $ STR : La chaîne de requête encodante de l'URL à analyser.

    • $ Array (facultatif): Si ce paramètre est fourni, les résultats de résolution seront stockés sous la forme d'un tableau associatif.

  • Valeur de retour :

    • Cette fonction ne renvoie pas de valeur et ne modifie pas directement le paramètre de tableau $ via la référence, ni n'attribue une variable globale.

Exemple :

 <span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"name=John&amp;age=25&amp;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>

Sortir :

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [name] =&gt; John
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [city] =&gt; NewYork
)
</span></span>

2. Introduction à la fonction MB_PARSE_STR

MB_PARSE_STR est une fonction fournie par l'extension de chaîne Multibyte ( MBSTring ) qui est similaire à PARSE_STR , mais la différence est qu'il peut gérer correctement les jeux de caractères multi -yte (tels que les caractères chinois en codés UTF-8). Sa syntaxe est très similaire à Parse_Str :

 <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> &amp;</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>
  • Paramètre :

    • $ STR : La chaîne de requête encodée de l'URL à analyser, généralement une chaîne codée par jeu de caractères multi -yte.

    • $ Array (facultatif): Les résultats analysés sont stockés dans ce tableau associatif.

  • Valeur de retour :

    • Identique à PARSE_STR , MB_PARSE_STR ne renvoie pas non plus de valeur, ce qui renvoie le résultat analysé en faisant référence au paramètre de tableau $ .

Exemple :

 <span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"name=Zhang San&amp;age=25&amp;city=Pékin"</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>

Sortir :

 <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>
    [city] =&gt; Pékin
)
</span></span>

3. La différence entre MB_Parse_Str et Parse_Str

  1. Prise en charge des personnages multi -yte :

    • PARSE_STR est conçu pour des jeux de caractères à un octets (tels que ISO-8859-1, GBK), et il y aura des problèmes brouillés pour les caractères multi-octets (comme le chinois, le japonais, le coréen, etc.).

    • MB_PARSE_STR fait partie de l'extension de caractères multi -yte, qui gère correctement les chaînes des ensembles de caractères multi -yte, de sorte que MB_Parse_Str est plus fiable que PARSE_STR lors de l'analyse des chaînes de requête contenant des caractères non ASCII.

  2. Traitement du jeu de caractères :

    • PARSE_STR ne gère pas les ensembles de caractères mulabyte, donc lorsque vous utilisez PARSE_STR , si la chaîne de requête contient des caractères chinois ou non ASCII, les résultats d'analyse peuvent être brouillés.

    • MB_PARSE_STR convient aux chaînes de codage multi-octets telles que UTF-8, ce qui garantit que les caractères sont corrects pendant l'analyse.

  3. performance :

    • PARSE_STR est une fonction intégrée PHP avec de bonnes performances et convient aux chaînes de requête de jeu de caractères à un octet simples.

    • MB_PARSE_STR fait partie de l'extension MBSTring , qui n'est pas disponible si le serveur n'a pas installé MBSTRING et est généralement légèrement plus lent car il nécessite un traitement supplémentaire de caractères multi -ytet.

4. Dans quelles circonstances sont les plus applicables?

  • Utilisation de PARSE_STR :

    • Lorsque la chaîne de requête URL que vous traitez ne contient que des caractères ASCII ou des caractères à un octet, parse_str est le meilleur choix. Il est simple et efficace, et convient aux scénarios anglais ou autres qui ne contiennent que des caractères à un octet.

  • Utilisation de mb_parse_str :

    • MB_PARSE_STR est requis lorsque la chaîne de requête URL que vous traitez contient des caractères multi -yte (tels que chinois, japonais, etc.). Il peut analyser correctement ces caractères et éviter les problèmes brouillés.

5. Résumé

  • PARSE_STR est une fonction d'analyse standard pour les jeux de caractères à un octet, adaptés aux cas où il n'y a pas de caractère spécial ou multi-octets.

  • MB_PARSE_STR est une fonction fournie par une extension de chaîne multi-octets, qui est spécifiquement utilisée pour traiter les chaînes de requête contenant des jeux de caractères multi-octets (tels que chinois, japonais, etc.).

La sélection de la fonction appropriée en fonction de la situation réelle peut garantir l'exactitude et l'efficacité du programme lors du traitement des chaînes de requête. Si l'application implique un support multilingue ou doit gérer les caractères non ASCII, il est recommandé d'utiliser MB_Parse_Str .