Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/09/2005, 19h09   #1
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 33
Points : 14
Points : 14
Par défaut Pb traitement de chaînes avec les regex

Hello,

je débute avec les regex.

j'ai voulu ajouter un espace insécable (&nbsp devant les caractères ":" de mes textes. Après quelques lectures de tuto, j'ai écris ça :
Code :
$string = eregi_replace("([ ]*)([:]{1})", " \\2", $string);
qui signifie : remplacer l'(es) espace(s) qui précéde(nt) le caractère ":" par " " (\\2 fait référence au contenu du 2ème couple de parenthèses donc ":", ce qui donne " :").

ok, ce script fonctionne

Cependant je viens de m'apercevoir qu'il altére les urls, normal puisqu'ils/elles contiennent ":" (http://www.developpez.com), dommage car maintenant tous mes liens sont morts (http ://www.developpez.com).

je cherche donc à remplacer seulement les ":" qui ne sont pas précédés de "http", je n'ai pas trouver de solution correcte.
je pensais que
Code :
$string = eregi_replace("([^(http)][ ]*)([:]{1})", " \\4", $string);
fonctionnerait mais non.

Avez-vous une idée ?
merci pour votre aide.
ipso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2005, 22h08   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
je pense que le plus efficace est d'abord de protéger les ":" dans les URL en remplaçant par exemple "http://" par "httpPROTECTION_DEUX_POINTS//"
ensuite tu fais le traitement dans ton texte et à la fin tu fais le remplacement inverse pour remettre en place les deux points dans les URL. attention aussi aux URL qui commencent par "https:" ou "ftp:" par exemple
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2005, 00h00   #3
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 33
Points : 14
Points : 14
merci Mathieu.
Houlala je suis vraiment nul de ne pas y avoir pensé, ta solution est facile et fonctionnelle. Merci.

Ok je fais ça tout de suite.

mais comme j'ai cherché pas mal de temps en vain, je suis preneur de toute solution avec les regex, j'ai soif de comprendre comment ça fonctionne vraiment.

merci pour votre aide.

je ne tague pas tout de suite le message avec [résolu] dans l'espoir qu'un jedi du regex participe.
ipso est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h18.


 
 
 
 
Partenaires

Hébergement Web