En PHP, lors du traitement des chaînes, nous devons souvent supprimer des pièces spécifiques d'une chaîne. La fonction MB_STRSTR () est une fonction de traitement de jeu de caractères multi -yte qui est particulièrement utile lors de la gestion des caractères non ASCII. Cet article présentera comment utiliser la fonction MB_STRSTR () pour supprimer la partie spécifiée d'une chaîne.
MB_Strstr () est une fonction de chaîne multi -yte, qui est similaire à la fonction STRSTR () régulière, mais elle est conçue pour les jeux de caractères multi -yte (tels que UTF-8, Shift-Jis, etc.). Par conséquent, lorsque nous devons traiter les chaînes contenant des caractères non anglophones, MB_STRSTR () sera plus stable et fiable.
<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>
$ Haystack : la chaîne cible à rechercher.
$ aiguille : la sous-chaîne à trouver.
$ before_needle (facultatif): si défini sur true , renvoyez la pièce avant l'aiguille , sinon retournez la pièce après l'aiguille .
$ Encoding (Facultatif): Spécifie le codage des caractères, la valeur par défaut est MB_internal_encoding () .
Supposons que nous ayons une chaîne et que nous voulons en supprimer une partie. Nous pouvons trouver la pièce avec MB_Strstr () , puis la supprimer via des opérations de chaîne.
Supposons que nous ayons la chaîne suivante:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"J'aime étudierPHPprogrammation"</span></span><span>;
</span></span>
Nous espérons supprimer la pièce "d'apprentissage", nous pouvons d'abord utiliser MB_STRSTR () pour trouver l'emplacement de cette sous-chaîne, puis effectuer le traitement correspondant.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"J'aime étudierPHPprogrammation"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"étude"</span></span><span>;
</span><span><span class="hljs-comment">// utilisermb_strstrTrouver"étude"Où apparaître</span></span><span>
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-comment">// Si trouvé"étude",Supprimer cette pièce</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// Supprimer la chaîne"étude"partie</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>)) . </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">mb_strlen</span></span><span>(</span><span><span class="hljs-variable">$needle</span></span><span>));
</span><span><span class="hljs-keyword">echo</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">"没有找到指定的partie"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>J'aimePHPprogrammation
</span></span>
Si nous voulons supprimer uniquement la pièce après la sous-chaîne, nous pouvons utiliser le paramètre avant_NeEDLE de la fonction MB_STRSTR () .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"J'aime étudierPHPprogrammation"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"étude"</span></span><span>;
</span><span><span class="hljs-comment">// Obtenir"étude"前的partie</span></span><span>
</span><span><span class="hljs-variable">$before</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$before</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>J'aime
</span></span>
Si nous devons supprimer plusieurs sous-chaînes différentes de la chaîne, nous pouvons utiliser MB_Strstr () et d'autres fonctions de manipulation de chaîne en combinaison. Nous pouvons effectuer des tâches efficacement à travers des boucles et des expressions régulières.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"J'aime étudierPHPprogrammation和WebDéveloppement"</span></span><span>;
</span><span><span class="hljs-variable">$needles</span></span><span> = [</span><span><span class="hljs-string">"étude"</span></span><span>, </span><span><span class="hljs-string">"Web"</span></span><span>];
</span><span><span class="hljs-comment">// Supprimer plusieurs sous-chaînes</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$needles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>) {
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-string">""</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>J'aimePHPprogrammation和Développement
</span></span>
MB_Strstr () est optimisé pour les jeux de caractères multi-octets. Il fonctionne généralement mieux que le STRSTR () conventionnel lorsqu'il s'agit de jeux de personnages, notamment chinois, japonais, coréen, etc.
Lors du traitement des caractères multipyte, assurez-vous que le format de codage correct est spécifié, sinon les résultats peuvent être inexacts.
Dans certains cas, en utilisant mb_substr () et mb_strpos () en combinaison, vous pouvez contrôler avec précision la position de suppression de la chaîne.
Grâce à la fonction MB_STRSTR () , nous pouvons facilement supprimer la partie spécifiée de la chaîne, en particulier dans le scénario de jeu de caractères multi-octets, qui a un effet très significatif. La compréhension et la maîtrise de ces techniques vous rendra non seulement plus efficace lorsque vous traitez des chaînes, mais évitera également certains problèmes de codage courants.