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 :

Regex ou autre pour capture de texte ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 58
    Points
    58
    Par défaut Regex ou autre pour capture de texte ?
    Salut à tous !

    Je cherche comment, à partir d'une chaîne, récupérer le contenu de balises .

    Exemple : [titre]mon titre[/titre]

    Devrait me retourner : mon titre

    J'ai pensé aux regex que je n'ai pour le même que très peu utilisé... Quelle fonction choisir ? Avez-vous un exemple utilisant une regex à me proposer correspondant à mon cas ?

    Merci !

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Salut,
    je te propose cela :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $subject = '[titre]mon titre[/titre]';
    $pattern = '`\[[^]]+\](.+)\[[^]]+\]`i';
    if(preg_match($pattern, $subject, $matches))
    {
       print_r($matches);	
    }

    qui renvoi :
    Array
    (
    [0] => [titre]mon titre[/titre]
    [1] => mon titre
    )

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    Parfait, merci !

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    Encore une chose... J'ai ajusté à mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $save = array();
     
    foreach ($this->chaine_html as $value) {
    	$subject = $value;
    	$pattern = '`\[[^]]+\](.+)\[[^]]+\]`i';
    		if(preg_match($pattern, $subject, $matches)) {
    			$save[] = $matches[1];	
    		}
    }
    Je stocke en fait dans des fichiers texte des balises contenant du texte... Le contenu du fichier texte dépend de ce que l'internaute a soumis via un formulaire.
    Mais voilà, dans le cas où il y a un retour à la ligne qui a été fait lors de la rédaction du commentaire par l'internaute, le code ne correspond plus...

    exemple : [commentaire]blabla bla\nbla[/commentaire]

    Il ne me trouve ni la balise ni le contenu...


    EDIT : résolu après ajout d'un str_replace pour remplacer les "\n" par "<br />"

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

Discussions similaires

  1. [Débutant] Regex pour capturé les Urls
    Par Horizon69 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/07/2013, 19h57
  2. Regex pour capturer du code
    Par Molos dans le forum Général Python
    Réponses: 1
    Dernier message: 25/11/2011, 08h57
  3. [RegEx] [Regex] Capturer du texte pour l'interpreter
    Par LaChips60 dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2011, 15h10
  4. [MFC]Problèmes pour orienter du texte
    Par Deedier dans le forum MFC
    Réponses: 1
    Dernier message: 25/03/2005, 17h15
  5. Probleme pour centre du texte
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/01/2005, 12h26

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