Cet article présente principalement comment remplacer une seule ou seulement N fois en PHP, et présente le thème à travers un exemple simple. J'espère que cela aide tout le monde.
Nous savons tous qu'en PHP, Strtr, strreplace et d'autres fonctions peuvent être utilisées pour le remplacement, mais elles remplacent toutes à chaque fois qu'elles sont remplacées. Par exemple :
"abcabbc", cette chaîne Si vous utilisez. la fonction ci-dessus pour remplacer b, alors elle les remplacera tous, mais que se passe-t-il si vous souhaitez en remplacer seulement un ou deux ? Voir la solution ci-dessous :
C'est une question plutôt intéressante, j'ai déjà fait un traitement similaire. . A cette époque, j'utilisais directement preg_replace pour l'implémenter.
mixed preg_replace (modèle mixte, remplacement mixte, sujet mixte [, limite int])
Recherchez une correspondance de motif dans le sujet et remplacez-la avec remplacement. Si la limite est spécifiée, seules les correspondances de limite sont remplacées ; si la limite est omise ou a une valeur de -1, toutes les correspondances sont remplacées.
Parce que le quatrième paramètre de preg_replace peut limiter le nombre de remplacements, il est très pratique de résoudre ce problème de cette manière. Mais après avoir examiné les commentaires sur les fonctions str_replace sur php.net, nous pouvons en fait sélectionner quelques fonctions représentatives.
Méthode 1 : str_replace_once
Idée Tout d'abord, recherchez la position du mot-clé à remplacer, puis utilisez la fonction substr_replace pour le remplacer directement.
<?php function str_replace_once($needle, $replace, $haystack) { // Looks for the first occurence of $needle in $haystack // and replaces it with $replace. $pos = strpos($haystack, $needle); if ($pos === false) { // Nothing found return $haystack; } return substr_replace($haystack, $replace, $pos, strlen($needle)); } ?>
Méthode 2, str_replace_limit
Réflexion J'utilise toujours preg_replace, mais ses paramètres ressemblent davantage à preg_replace, et certains caractères spéciaux sont échappés, ce qui le rend plus polyvalent.
<? function str_replace_limit($search, $replace, $subject, $limit=-1) { // constructing mask(s)... if (is_array($search)) { foreach ($search as $k=>$v) { $search[$k] = '`' . preg_quote($search[$k],'`') . '`'; } } else { $search = '`' . preg_quote($search,'`') . '`'; } // replacement return preg_replace($search, $replace, $subject, $limit); } ?>
Recommandations associées :
Introduction à la segmentation et à la comparaison de chaînes php
Méthode de remplacement de chaîne php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!