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 :

Texte entre deux balises [RegEx]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Texte entre deux balises
    Bonjour, je débute avec les expressions régulières et j'ai un petit soucis.
    Je souhaiterais récupérer dans un texte le contenu qui se situe entre ces 2 balises : <ul></ul>
    Je veux ensuite supprimer tous les /n qui peuvent se situer entre ces 2 balises.
    Et enfin je veux réintégrer la nouvelle liste à la place de l'ancienne dans le texte d'origine.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    if ($signature != "") {
    	$BBCode = array (
    		'#\[bold\](.+)\[/bold\]#isU',
    		'#\[italic\](.+)\[/italic\]#isU',
    		'#\[underline\](.+)\[/underline\]#isU',
    		'#\[line-through\](.+)\[/line-through\]#isU',
    		'#\[overline\](.+)\[/overline\]#isU',
     
    		'#\[ul\](.+)\[/ul\]#isU',
    		'#\[ol\](.+)\[/ol\]#isU',
    		'#\[li\](.+)\[/li\]#isU',
     
    		'#\[spoiler\](.+)\[/spoiler\]#isU',
    		'#\[quote=(.+)\](.+)\[/quote\]#isU',
    		'#\[code\](.+)\[/code\]#isU',
     
    		'#\[url=(.+)\](.+)\[/url\]#isU',
    		'#\[img\](.+)\[/img\]#isU',
    		'#\[video\](.+)\[/video\]#isU',
     
    		'#\[color=(.+)\](.+)\[/color\]#isU',
    		'#\[size=(.+)\](.+)\[/size\]#isU',
     
    		'#\[left\](.+)\[/left\]#isU',
    		'#\[center\](.+)\[/center\]#isU',
    		'#\[right\](.+)\[/right\]#isU',
    		'#\[justify\](.+)\[/justify\]#isU',
    	);
     
    	$html = array(
    		'<span style="font-weight:bold">$1</span>',
    		'<span style="font-style:italic">$1</span>',
    		'<span style="text-decoration:underline">$1</span>',
    		'<span style="text-decoration:line-through">$1</span>',
    		'<span style="text-decoration:overline">$1</span>',
     
    		'<ul>$1</ul>',
    		'<ol>$1</ol>',
    		'<li>$1</li>',
     
    		'<div class="spoiler">$1</div>',
    		'<blockquote><span style="font-weight:bold">Citation de : $1</span><br/>$2</blockquote>',
    		'<div class="code">$1</div>',
     
    		'<a href="$1" class="lien">$2</a>',
    		'<img src="$1" alt="Image utilisateur" />',
    		'<div class="video">$1</div>', //A changer
     
    		'<span style="color:$1">$2</span>',
    		'<span style="font-size:$1">$2</span>',
     
    		'<div style="text-align:left">$1</div>',
    		'<div style="text-align:center">$1</div>',
    		'<div style="text-align:right">$1</div>',
    		'<div style="text-align:justify">$1</div>',
    	);
    	$signature = htmlspecialchars($signature, ENT_QUOTES);
     
    	$signature = preg_replace($BBCode, $html, $signature);
    	$signature = preg_replace('#\n#isU', '<br />', $signature);
     
    	$liste = preg_match('#<ul>.+</ul>#isU', $signature);
    	$listeNew = preg_replace('#<br />#isU', '', $liste);
    	$signature = preg_replace($liste, $listeNew, $signature);
    }
    Si je laisse la ligne : $signature = preg_replace($liste, $listeNew, $signature); la variable $signature devient vide alors qu'elle devrait contenir le texte d'origine avec les modifications apportées aux listes.
    D'où peut venir le problème ?

    Merci de votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bon j'ai finalement trouvé la solution tout seul.
    En faite $liste renvoyait un boolean et donc $listeNew = preg_replace('#<br />#isU', '', $liste); ne marchait pas.
    Il fallait stocker la chaîne dans $result de cette façon : $liste = preg_match('#<[u|o]l>.+</[u|o]l>#isU', $signature, $result); et ensuite travailler sur $result[0].

    Voilà le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $signature = htmlspecialchars($signature, ENT_QUOTES);
    $signature = preg_replace($BBCode, $html, $signature);
    $signature = preg_replace('#\n#isU', '<br />', $signature);
    $liste = preg_match('#<[u|o]l>.+</[u|o]l>#isU', $signature, $result);
    $listeNew = preg_replace('#<br />#isU', '', $result[0]);
    $signature = str_replace($result[0], $listeNew, $signature);
    $finListe = preg_match('#</[u|o]l>.<br />#isU', $signature, $resultBis);
    $finListeNew = preg_replace('#<br />#isU', '', $resultBis[0]);
    $signature = str_replace($resultBis[0], $finListeNew, $signature);

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

Discussions similaires

  1. Récupérer un texte entre deux balises prédéfinies
    Par Zaki_SDwin dans le forum Contribuez
    Réponses: 6
    Dernier message: 28/05/2008, 20h50
  2. [RegEx] Texte entre deux balises <td>
    Par jhdscript dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2007, 07h56
  3. Regexp: extraire du texte entre deux balises
    Par moook dans le forum Langage
    Réponses: 11
    Dernier message: 19/06/2007, 18h08
  4. [DOM] [Débutant] Récupérer texte entre deux balises
    Par webrider dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/02/2007, 09h49
  5. supprimer texte entre deux balises specifiques
    Par HurtMarley dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 18h30

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