Position actuelle: Accueil> Derniers articles> Comment combiner les fonctions MB_EREG et MB_SPLIT pour atteindre une segmentation efficace des chaînes multi-gytets? Guide pratique

Comment combiner les fonctions MB_EREG et MB_SPLIT pour atteindre une segmentation efficace des chaînes multi-gytets? Guide pratique

gitbox 2025-08-27

3. Utilisez MB_SPLIT pour implémenter la segmentation

 <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><span class="hljs-comment">// Définir le codage des caractères internes</span></span><span>

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"[,,]+"</span></span><span>;  </span><span><span class="hljs-comment">// Correspondre aux virgules anglaises et aux virgules chinoises,Un ou plusieurs consécutifs</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

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

Résultat de sortie:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; pomme
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; banane
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; Tangerine
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; Raisin
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; pastèque
)
</span></span>

MB_SPLIT reconnaît automatiquement la virgule chinoise et complète correctement la segmentation des chaînes.


4. Pré-match avec mb_ereg

Dans certains scénarios complexes, nous voulons d'abord déterminer s'il existe un certain motif dans la chaîne, puis le segmenter. Vous pouvez utiliser MB_EREG :

 <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-string">"[,,]"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>)) {
    </span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-string">"[,,]+"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$result</span></span><span> = [</span><span><span class="hljs-variable">$text</span></span><span>]; </span><span><span class="hljs-comment">// Pas besoin de fendre</span></span><span>
}
</span></span>

Cela peut éviter les opérations de segmentation inutiles et améliorer l'efficacité.


5. Choses à noter

  • Encodage de caractères unifié: utilisez MB_internal_encoding ("UTF-8") pour vous assurer que les fonctions sont uniformément codées par UTF-8 pour éviter le code brouillé.

  • Écriture de mode régulier: La syntaxe d'expression régulière de la MBSTring est légèrement différente, faites attention à l'utilisation correcte des crochets et des caractères échappés.

  • Considérations de performances: lors de l'exécution de plusieurs correspondances régulières à de grands textes, la combinaison de MB_EREG pour juger, puis la segmentation peut améliorer l'efficacité.


6. Résumé

En combinant raisonnablement MB_EREG et MB_SPLIT , nous pouvons:

  • Gérer avec précision la segmentation des chaînes codées mulabyte

  • Support flexible pour plusieurs séparateurs

  • Optimiser les performances dans les conditions d'avant-match

La maîtrise de ces compétences vous permettra d'être à l'aise lorsque vous traitez avec des textes multilingues et évitera les erreurs de code et de segmentation courbées courantes.


Exemple de code complet:

 <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><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"pomme,banane,Tangerine,Raisin,pastèque"</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-string">"[,,]"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>)) {
    </span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-string">"[,,]+"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$result</span></span><span> = [</span><span><span class="hljs-variable">$text</span></span><span>];
}

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

Après l'exécution, vous pouvez obtenir le résultat fractionné correct.