Position actuelle: Accueil> Derniers articles> MB_STRSTRST et MB_STRPOS sont utilisés ensemble pour extraire des fragments de chaîne complexes.

MB_STRSTRST et MB_STRPOS sont utilisés ensemble pour extraire des fragments de chaîne complexes.

gitbox 2025-09-29

En PHP, le traitement des chaînes est l'une des opérations les plus courantes. Et lorsque vous êtes confronté à une chaîne complexe, comment extraire efficacement les fragments dont vous avez besoin peut devenir un défi. Surtout lorsque les chaînes contiennent du contenu dans de nombreux formats différents, il est particulièrement important d'utiliser les fonctions et méthodes correctes. Cet article se concentrera sur la façon d'utiliser la combinaison de deux fonctions de chaîne multi -yte, MB_STRSTR et MB_STRPOS , pour extraire des fragments spécifiques des chaînes complexes.

1. Introduction à MB_Strstr et MB_STRPOS

Avant de commencer le combat réel, comprenez d'abord l'utilisation de base de ces deux fonctions.

  • MB_STRSTR : Cette fonction est utilisée pour trouver la première occurrence d'une chaîne dans une autre chaîne. Contrairement à la fonction STRSTR conventionnelle, MB_STRSTR est conçu pour prendre en charge les codages mulabytes tels que UTF-8 et Shift-Jis, qui gère correctement ces formats de codage.

    grammaire:

     <span><span><span class="hljs-title function_ invoke__">mb_strstr</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>

    Description du paramètre:

    • $ Haystack : la chaîne cible à rechercher.

    • $ aiguille : la sous-chaîne à trouver.

    • $ before_needle : Si vous êtes défini sur true , la partie avant l'aiguille est retournée.

    • $ Encodage : spécifiez le codage des caractères, par défaut NULL (c'est-à-dire le codage par défaut du système).

  • MB_STRPOS : Cette fonction est utilisée pour trouver la première position d'occurrence d'une sous-chaîne dans une autre chaîne et renvoie l'indice de la position de la sous-chaîne dans la chaîne cible. Il prend également en charge l'encodage multi-gobets.

    grammaire:

     <span><span><span class="hljs-title function_ invoke__">mb_strpos</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">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</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">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
    </span></span>

    Description du paramètre:

    • $ Haystack : la chaîne cible à rechercher.

    • $ aiguille : la sous-chaîne à trouver.

    • $ offset : spécifie par où démarrer la recherche.

    • $ Encodage : Spécifie le codage des caractères, la valeur par défaut est nul .

2. Scénario d'utilisation: extraire des fragments de cordes complexes

Supposons que nous ayons une chaîne contenant beaucoup d'informations, telles que le profil de l'utilisateur, qui contient plusieurs champs tels que le nom, l'e-mail, l'adresse, etc. Notre tâche consiste à extraire la valeur d'un certain champ.

Par exemple, étant donné la chaîne suivante:

 <span><span><span class="hljs-variable">$user_info</span></span><span> = </span><span><span class="hljs-string">"Nom: Zhang San, Mail: [email protected], adresse: District de Chaoyang, Pékin"</span></span><span>;
</span></span>

Nous voulons en extraire la partie de la boîte aux lettres. Pour y parvenir, nous pouvons utiliser les fonctions MB_STRPOS et MB_STRSTR pour coopérer avec la recherche et l'extraction.

3. Fonctionnement pratique

3.1 Trouvez l'emplacement de l'adresse e-mail

Tout d'abord, nous devons trouver l'emplacement du champ "boîte aux lettres" dans la chaîne. Utilisez MB_STRPOS pour implémenter:

 <span><span><span class="hljs-variable">$email_position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"Mail: "</span></span><span>);
</span></span>

Cette fonction renverra la position de la partie "Boîte aux lettres:" dans la chaîne.

3.2 Utilisez MB_STRST pour extraire la boîte aux lettres

Ensuite, nous utilisons MB_STRSTR pour extraire l'adresse e-mail de "Email:". Pour ce faire, nous voulons transmettre le paramètre $ avant_NEEDLE à FAUX , indiquant que le départ de "Email:" et la fin de la chaîne:

 <span><span><span class="hljs-variable">$email_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"Mail: "</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);
</span></span>

À ce stade, la valeur de $ email_info sera:

 <span><span>Mail</span><span><span class="hljs-punctuation">:</span></span><span> zhangsan</span><span><span class="hljs-meta">@example</span></span><span>.com, adresse</span><span><span class="hljs-punctuation">:</span></span><span> District de Chaoyang, Pékin
</span></span>

Mais nous n'avons besoin que de la pièce de boîte aux lettres, donc ensuite, nous y traiterons davantage.

3.3 Extrait d'adresse e-mail pure

Afin d'extraire une adresse e-mail pure, nous pouvons utiliser MB_STRPOS pour trouver l'emplacement final de l'adresse e-mail et l'extraire via MB_SUBSTR .

Tout d'abord, nous trouvons l'emplacement de départ de l'adresse e-mail (il est déjà connu pour être après "e-mail:"), puis trouver l'emplacement de la première virgule, c'est-à-dire l'emplacement final de l'adresse e-mail:

 <span><span><span class="hljs-variable">$email_start</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">"Mail: "</span></span><span>) + </span><span><span class="hljs-number">4</span></span><span>; </span><span><span class="hljs-comment">// +4C&#39;est parce que“Mail: ”Longueur</span></span><span>
</span><span><span class="hljs-variable">$email_end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>); </span><span><span class="hljs-comment">// 从Mailadresse的起始位置开始查找逗号</span></span><span>
</span></span>

Ensuite, nous utilisons MB_substr pour extraire l'adresse e-mail:

 <span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>, </span><span><span class="hljs-variable">$email_end</span></span><span> - </span><span><span class="hljs-variable">$email_start</span></span><span>);
</span></span>

Pour le moment, la valeur de $ e-mail est:

 <span><span>zhangsan</span><span><span class="hljs-keyword">@example</span></span><span>.com
</span></span>

4. Résumé

En combinant MB_Strstr et MB_STRPOS , nous pouvons extraire les fragments requis des chaînes complexes avec une très flexibilité. La clé est:

  • Utilisez MB_STRPOS pour trouver la position d'index de la sous-chaîne.

  • Utilisez MB_STRST pour extraire les chaînes de l'emplacement spécifié.

  • Extraire plus précisément le fragment cible en fonction de la longueur requise par MB_SUBSTR .

Cette méthode est particulièrement adaptée au traitement des chaînes contenant plusieurs informations et peut nous aider à obtenir efficacement les données requises dans le développement réel.