IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pb traitement de chaînes avec les regex


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $string = eregi_replace("([^(http)][ ]*)([:]{1})", " \\4", $string);
    fonctionnerait mais non.

    Avez-vous une idée ?
    merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 701
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 701
    Par défaut
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    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.

Discussions similaires

  1. Soucis avec les regex
    Par ChipsterJulien dans le forum Boost
    Réponses: 4
    Dernier message: 21/03/2008, 19h08
  2. probleme avec les regex
    Par dalton5 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/02/2007, 17h33
  3. [RegEx] validation url avec les regex
    Par morgan47 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2007, 13h57
  4. [RegEx] Problème avec les regex
    Par foffa dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2006, 14h24
  5. [RegEx] Problème avec les regex
    Par dragon noir dans le forum Langage
    Réponses: 3
    Dernier message: 24/07/2006, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo