En PHP, la manipulation des cordes est une tâche très courante et importante. Pour obtenir un traitement de chaîne plus flexible, PHP fournit de nombreuses fonctions utiles. L'un d'eux est la fonction MB_STRSTRR , qui peut trouver une sous-chaîne dans une chaîne codée à plusieurs sitets et est insensible au cas. Cette fonction est principalement utilisée pour traiter les chaînes comme UTF-8 ou d'autres jeux de caractères multi -yte.
MB_STRSTR est une fonction de version MultiByte en PHP pour effectuer des recherches de chaînes insensibles à des cas. Semblable à la fonction STRSTR normale, MB_Strstr renvoie également la partie où la sous-chaîne spécifiée apparaît d'abord, la différence est qu'il peut gérer correctement le jeu de caractères multi -yte.
<span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ Haystack : Il s'agit de la chaîne cible à rechercher.
$ aiguille : c'est la sous-chaîne que vous recherchez.
$ before_needle : Si défini sur true , la chaîne retournée sera la pièce de $ haystack à où $ aigule apparaît d'abord. La valeur par défaut est fausse , qui renvoie la pièce après $ aiguille .
$ Encodage : spécifie le codage des caractères (s'il n'est pas spécifié, la valeur par défaut est d'utiliser des paramètres de codage de caractères internes, généralement UTF-8).
Voici un exemple simple montrant comment utiliser la fonction MB_STRSTR pour trouver des sous-chaînes insensibles au cas.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Définissez le codage sur UTF-8</span></span><span>
</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">// Chaîne cibler</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, monde! Welcome to PHP."</span></span><span>;
</span><span><span class="hljs-comment">// Substrating à trouver</span></span><span>
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"world"</span></span><span>;
</span><span><span class="hljs-comment">// utiliser mb_stristr Trouver des sous-chaînes,Cas insensible au cas</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Sous-chaîne trouvée: "</span></span><span> . </span><span><span class="hljs-variable">$result</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">"Aucune sous-chaîne trouvée。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
MB_INTERNAL_ENCODING ("UTF-8") définit le codage de caractères interne à UTF-8, ce qui garantit que les chaînes multi-gytets sont traitées correctement.
Nous utilisons MB_STRSTR ($ Haystack, $ aiguille) pour rechercher $ aiguille dans $ haystack . Étant donné que MB_STRISRT est insensible au cas, le "monde" et le "monde" sont considérés comme correspondants.
Si une sous-chaîne correspondante est trouvée, la fonction renvoie la pièce de la position correspondante à la fin de la chaîne; Si cela n'est pas trouvé, faux .
Une caractéristique importante de MB_STRISRT est qu'elle peut gérer correctement les jeux de caractères multi -yte (tels que UTF-8, SJIS, etc.). Cela le rend plus fiable que Strrist lorsqu'il s'agit de cordes non ASCII.
Par exemple, supposons que nous recherchons des caractères chinois:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Chaîne cibler包含中文字符</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"J'aime la programmation。"</span></span><span>;
</span><span><span class="hljs-comment">// Trouver"comme"Sous-chaîne</span></span><span>
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"comme"</span></span><span>;
</span><span><span class="hljs-comment">// Trouver并返回匹配部分</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Sous-chaîne trouvée: "</span></span><span> . </span><span><span class="hljs-variable">$result</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">"Aucune sous-chaîne trouvée。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans cet exemple, MB_STRISRT reconnaît correctement le caractère Multibyte "Like" et renvoie la section suivante à partir de la sous-chaîne.
Encodage de caractères : assurez-vous que le codage de personnage de $ Haystack et $ aigule est cohérent, en particulier lorsqu'il s'agit de jeux de caractères multi -yte. Si le codage ne correspond pas, cela peut entraîner des résultats inégalés ou incorrects.
Considérations de performance : Par rapport aux fonctions strist ordinaires, les performances de MB_STRISRT peuvent être légèrement inférieures, en particulier lors de la recherche en grande quantité de texte. Il doit être considéré sur la base des conditions réelles.
Ne pas revenir à la position d'origine : Contrairement aux fonctions telles que MB_STRPOS , MB_STRSTR Renvoie une sous-chaîne à partir du point de correspondance, pas la position. Si vous avez besoin d'obtenir l'emplacement, vous pouvez utiliser MB_STRPOS ou MB_STRRPOS (recherche inversée).
MB_STRISRT est une fonction très utile en PHP qui nous permet d'effectuer des opérations de recherche insensibles à des cas dans les chaînes de jeux de caractères multi -yte. En utilisant cette fonction raisonnablement, il nous permet de traiter plus facilement UTF-8 ou d'autres chaînes codées et d'effectuer une correspondance flexible des chaînes.