[PHP] 'tit bug str_replace
Fermé
Burnyfighter
-
16 mai 2008 à 00:31
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 - 19 mai 2008 à 16:39
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 - 19 mai 2008 à 16:39
A voir également:
- [PHP] 'tit bug str_replace
- Bug yahoo mail - Accueil - Mail
- Easy php - Télécharger - Divers Web & Internet
- Bug chatgpt - Accueil - Intelligence artificielle
- Iptv bug - Forum Box et Streaming vidéo
- Retour a la ligne php ✓ - Forum PHP
2 réponses
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
16 mai 2008 à 10:03
16 mai 2008 à 10:03
Bonjour.
Il n'y a pas de bug, il n'y a qu'une "mauvaise" utilisation de la fonction...
Tu peux essayer avec $find=array(161,61); , ça devrait marcher. Je crois que str_replace lit le tableau $find dans l'ordre, donc en commençant par la chaîne la plus longue, ça devrait passer.
Mais si tu as 1611 dans ton $string, ton résultat sera faux :
1. On remplace le 161 par 6 : 1611 => 61
2. On remplace 61 par 5 : 61 => 5
Ca dépend de ce que tu veux faire, mais il faudrait trouver autre chose. Au minimum, utilise des expressions réguilères.
Il n'y a pas de bug, il n'y a qu'une "mauvaise" utilisation de la fonction...
Tu peux essayer avec $find=array(161,61); , ça devrait marcher. Je crois que str_replace lit le tableau $find dans l'ordre, donc en commençant par la chaîne la plus longue, ça devrait passer.
Mais si tu as 1611 dans ton $string, ton résultat sera faux :
1. On remplace le 161 par 6 : 1611 => 61
2. On remplace 61 par 5 : 61 => 5
Ca dépend de ce que tu veux faire, mais il faudrait trouver autre chose. Au minimum, utilise des expressions réguilères.
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
19 mai 2008 à 16:39
19 mai 2008 à 16:39
Utilise la fonction preg_replace.
De tête, je dirais que le masque à utiliser est ("/^61/$", "/^161/$") ...
le /^ sert à indiquer le début de la chaîne, /$ la fin de la chaîne. Donc en encadrant les nombres que tu recherches comme ça, tu devrait te limiter aux correspondances exactes.
De tête, je dirais que le masque à utiliser est ("/^61/$", "/^161/$") ...
le /^ sert à indiquer le début de la chaîne, /$ la fin de la chaîne. Donc en encadrant les nombres que tu recherches comme ça, tu devrait te limiter aux correspondances exactes.
16 mai 2008 à 17:50
je me doutais bien qu'il ne s'agissait pas d'un bug, mais je pensait que str_replace ferait un remplacement par valeur entière (vu qu'ici il s'agit d'entiers) mais en fait il interprète cet entier comme un string (d'ou le STR replace).
Maintenant le souci que je rencontre est qu'en fait mes données ne sont pas ordonnées par ordre croissant et que j'ignore leur valeur vu que c'est un traitement automatique à partir de la BDD.
Je reste toutefois preneur d'une quelconque solution !