Problème preg_replace
Résolu
Zabuza66
Messages postés
368
Date d'inscription
Statut
Membre
Dernière intervention
-
Zabuza66 Messages postés 368 Date d'inscription Statut Membre Dernière intervention -
Zabuza66 Messages postés 368 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai quelques problèmes avec la fonction preg_replace avec laquelle je me tire les cheveux depuis bien longtemps, malgrés de nombreuses lectures de Tutos ( comme ici https://lumadis.be/regex/tuto_pcre.php )
Je cherche à remplacer par un espace " " tous les - ( signes moins, ou tiret donc ) d'une chaîne SAUF ( sinon j'utiliserai str_replace) si elle possède deux -
En gros
Bonjour-ca-va--bien
devrait donner Bonjour ca va --bien ( ou quelque chose dans le genre )
Quelcun pourrait-il m'aider svp?
J'ai quelques problèmes avec la fonction preg_replace avec laquelle je me tire les cheveux depuis bien longtemps, malgrés de nombreuses lectures de Tutos ( comme ici https://lumadis.be/regex/tuto_pcre.php )
Je cherche à remplacer par un espace " " tous les - ( signes moins, ou tiret donc ) d'une chaîne SAUF ( sinon j'utiliserai str_replace) si elle possède deux -
En gros
Bonjour-ca-va--bien
devrait donner Bonjour ca va --bien ( ou quelque chose dans le genre )
Quelcun pourrait-il m'aider svp?
3 réponses
[quote]Pour faire une seule opération, il faut réfléchir 5 minutes que je n'ai pas :p[/quote]
Tu as donc perdu du temps pour rien, vu que Clément m'a répondu.
J'ai fais quelque chose de similaire
Tu as donc perdu du temps pour rien, vu que Clément m'a répondu.
J'ai fais quelque chose de similaire
J'ai une solution... Un peu tordue, mais une solution quand même !
En passant uniquement avec str_replace :
tu remplaces les -- par, par exemple, ||| (le genre de truc que tu ne trouveras nulle part).
Après tu remplaces les - par des espaces.
Et enfin tu remets les --...
Tout cela obligatoirement en 3 étapes.
Ca donne :
$var = str_replace("--","|||",$var);
$var = str_replace("-"," ",$var);
$var = str_replace("|||","--",$var);
Je sais, c'est pas le pied... Mais je vois pas comment faire autrement ! :)
En passant uniquement avec str_replace :
tu remplaces les -- par, par exemple, ||| (le genre de truc que tu ne trouveras nulle part).
Après tu remplaces les - par des espaces.
Et enfin tu remets les --...
Tout cela obligatoirement en 3 étapes.
Ca donne :
$var = str_replace("--","|||",$var);
$var = str_replace("-"," ",$var);
$var = str_replace("|||","--",$var);
Je sais, c'est pas le pied... Mais je vois pas comment faire autrement ! :)
La solution de facilité consisterait en remplaçant d'abord les doubles tirets par quelquechose d'autre, par exemple les caractères "AQWZSX", puis de remplacer les tirets par les espaces, et enfin remplacer tout les AQWZSX par les doubles tirets (si tu veux les retrouver).
Pour faire une seule opération, il faut réfléchir 5 minutes que je n'ai pas :p
Pour faire une seule opération, il faut réfléchir 5 minutes que je n'ai pas :p