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 :

[regexp] Problème avec ereg_replace [Débutant(e)]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut [regexp] Problème avec ereg_replace
    Bonjour,

    j'utilise ereg_replace pour transformer des tag style bb-code en balise html.
    Mon problème survient sur mes tag de lien ([LIEN="http://.."]texte a cliquer[/LIEN])

    Voici mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $texte = ereg_replace("\[LIEN=\"([a-zA-Z0-9\.\?=&/,;:%#~_+-]*)\"\](.*)\[/LIEN\]",
    "<A href='\\1' target=_blank>\\2</A>", $texte);
    Il fonctionne bien lorsqu'il y a qu'un lien dans le texte.

    Mais si maintenant j'ai un texte style :
    [LIEN="http://www.site1.com/"]Lien vers site 1[/LIEN]
    ...
    [LIEN="http://www.site2.com"]lien vers site 2[/LIEN]
    Voici ce que j'obtient apres transformation :
    <a href="http://www.site1.com/" target="_blank">Lien vers site 1[/LIEN]
    ...
    [LIEN="http://www.site2.com"]lien vers site 2</a>
    Il me fait un lien avec les 2 tags

    Je pense qu'il faudrait remplacer le (.*) pour interdire les saut de lignes entre[LIEN=".."] et [/LIEN]. Mais je ne sais pas comment faire
    De plus j'aimerais éviter pour permettre des liens sur plusieurs lignes...

    En réalité mes tags sont URL mais j'ai modifié ici pour ne pa savoir de problèmes d'affichage, sa n'a pas beaucoup d'importance..

    Merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    C'est typiquement le genre de choses que tu résoudrais en deux temps trois mouvements si tu utilisais les PCRE au lieu des expressions POSIX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $texte = preg_replace('#\[LIEN="([^"]+)"\](.*)\[/LIEN\]#Usi",
    "<a href=\"\\1\" target=\"_blank\">\\2</a>", $texte);

  3. #3
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Merci, sa fonctionne parfaitement.

    Par contre je suis un peu nul niveau expression régulière alors je vais aller me documenter la dessus
    Je pensais qu'il existait qu'un type d'expression reguliere

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Regexp] Problème de réalisation avec les || (OU)
    Par omlip dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 16/10/2006, 10h35
  2. [RegEx] Problème avec ereg_replace()
    Par Neuromancien2 dans le forum Langage
    Réponses: 8
    Dernier message: 01/07/2006, 23h26
  3. [RegExp] Nom de fichier avec $
    Par GLDavid dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2006, 21h43
  4. [RegEx] bug avec ereg_replace()
    Par taly dans le forum Langage
    Réponses: 6
    Dernier message: 26/12/2005, 23h12
  5. [MySQL] probleme d'antislash avec ereg_replace
    Par photorelief dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/10/2005, 11h27

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