Position actuelle: Accueil> Derniers articles> Comment capturer les résultats de correspondance dans la fonction MB_EREG? Analyse des étapes complètes et des précautions

Comment capturer les résultats de correspondance dans la fonction MB_EREG? Analyse des étapes complètes et des précautions

gitbox 2025-09-02

1. Utilisation de base de la fonction MB_EREG

La syntaxe de base de la fonction MB_EREG est la suivante:

 <span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(pattern, </span><span><span class="hljs-keyword">string</span></span><span>, &amp;regs)
</span></span>
  • Modèle : le schéma des expressions régulières.

  • String : la chaîne cible qui doit être appariée.

  • REGS : Il s'agit d'un paramètre facultatif pour stocker les résultats correspondants. Si ce paramètre est fourni, MB_EREG stockera la partie correspondante dans les regs du tableau. L'indice du tableau 0 correspond à l'ensemble du résultat de correspondance, et les indices suivants correspondent au résultat correspondant du sous-basateur.

Exemple:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"AccueillirPHPTutoriel"</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"PHP"</span></span><span>;
</span><span><span class="hljs-variable">$regs</span></span><span> = [];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$regs</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Correspondre avec succès\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$regs</span></span><span>);  </span><span><span class="hljs-comment">// Sortir le résultat correspondant capturé</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le match a échoué\n"</span></span><span>;
}
</span></span>

Dans l'exemple ci-dessus, si la chaîne "Welcome to PHP Tutorial" contient "PHP" , MB_EREG renvoie True et stocke le "PHP" correspondant dans le tableau $ Regs .

2. Capturez le résultat correspondant

La clé pour capturer les résultats de correspondance réside dans le paramètre REGS . Avec ce paramètre, MB_EREG stockera le contenu correspondant un par un et peut capturer les résultats correspondants de plusieurs sous-expressions.

Exemple:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"C&#39;estPHPetMySQLExemples combinés"</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"(PHP)(et)(MySQL)"</span></span><span>;
</span><span><span class="hljs-variable">$regs</span></span><span> = [];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$regs</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Correspondre avec succès\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$regs</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le match a échoué\n"</span></span><span>;
}
</span></span>

Résultat de sortie:

 <span><span>Correspondre avec succès
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; PHPetMySQL
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; PHP
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; et
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; MySQL
)
</span></span>

Dans cet exemple, l'expression régulière (PHP) (et) (MySQL) capturera les résultats correspondants de trois sous-bassins, à savoir "PHP" , "et" et "MySQL" . $ Regs [0] enregistre toute la chaîne de correspondance, et les $ REGS [1] , $ REGS [2] et $ Regs [3] enregistrent les résultats correspondants de chaque sous-support.

3. Choses à noter

3.1 Rédaction d'expressions régulières

La syntaxe d'expression régulière utilisée par MB_EREG est similaire aux expressions régulières communes, mais il existe des différences, en particulier lorsqu'ils traitent avec des caractères multi-gytets. Portez une attention particulière à la gamme de personnages d'expressions régulières et aux compétences lors du traitement des caractères chinois.

Par exemple:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"^[\x{4e00}-\x{9fa5}]+$"</span></span><span>;  </span><span><span class="hljs-comment">// Correspondre uniquement aux caractères chinois</span></span><span>
</span></span>

Cette expression régulière ne correspondra que des chaînes contenant des caractères chinois (plage de codage Unicode: \ x {4e00} à \ x {9fa5} ).

3.2 Passage des paramètres

Lors de l'utilisation de MB_EREG , le paramètre REGS doit être transmis sous forme de référence, garantissant que le résultat correspondant est capturé. Sinon, le tableau $ Regs ne pourra pas renvoyer de données.

3.3 La valeur de retour de la fonction

MB_EREG renvoie une valeur booléenne indiquant si la correspondance est réussie. Renvoie True si le match réussit, sinon renvoyez false .

3.4 Paramètres de codage

Pour s'assurer que le jeu de caractères multi -yte fonctionne correctement, il est généralement nécessaire de définir le codage de caractères correct avant d'appeler MB_EREG . Vous pouvez utiliser mb_internal_encoding () pour définir le codage:

 <span><span><span class="hljs-title function_ invoke__">mb_internal_encoding</span></span><span>(</span><span><span class="hljs-string">"UTF-8"</span></span><span>);
</span></span>

Si vous traitez avec un jeu de caractères codé non UTF-8 (tel que GBK ou Shift-Jis), vous devez vous assurer que le codage est correctement défini.

3.5 Optimisation des performances

Étant donné que MB_EREG est une fonction optimisée pour les jeux de caractères multi -yte, ses performances peuvent être affectées par les jeux de caractères et les longueurs de chaîne par rapport à la correspondance ordinaire. Par conséquent, il est recommandé de prêter attention à l'optimisation lors du traitement de grandes quantités de données, comme éviter trop d'opérations d'expression régulières.

4. Résumé

La fonction MB_EREG nous fournit un outil puissant en PHP pour gérer la correspondance régulière des jeux de caractères multi -yte. En utilisant correctement le paramètre REGS , nous pouvons facilement capturer et traiter les résultats correspondants. Comprendre comment rédiger des expressions régulières, passer des paramètres et définir l'encodage vous aidera à utiliser plus efficacement MB_EREG pour le traitement des chaînes.