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 :

Remplacement multiple de balises span différentes [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 413
    Par défaut Remplacement multiple de balises span différentes
    Bonjour.

    Je cherche à remplacer des balises de type <span> de textes, formatés ainsi par des mots en gras et en italic par des balises simples : <b> et <i> avec cette expression :

    Rechercher : (<span class="bold">)(.*)(</span>),
    Remplacer : <b>$2</b>,

    Et la même chose pour l'italique.

    Problème : ça fonctionne uniquement lorsqu'il n'y a qu'une seule balise. Dès qu'il y en a au moins deux, la recherche s'appuie sur le dernier </span> du texte.

    Ce que je voudrais :

    Rechercher : <p>Quibus occurrere bene pertinax miles explicatis ordinibus parans <span class="italic">hastisque</span> feriens scuta qui habitus iram <span class="bold">pugnantium</span> concitat.</p>,
    Remplacer : <p>Quibus occurrere bene pertinax miles explicatis ordinibus parans <i>hastisque</i> feriens scuta qui habitus iram <b>pugnantium</b> concitat.</p>.

    Donc, comment séparer les spans par paires ouvrante/fermante ?

    Merci.

  2. #2
    Membre éclairé Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 413
    Par défaut
    Pour la recherche j'ai trouvé ceci : (<\s*\/?\s*span class="italic"\s*.*?>).

    Mais pour le remplacement, je creuse encore...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,


    Avec preg_replace_callback :
    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
    <?php
    $chaine = '<p>Quibus <span class="italic">occurrere</span> bene <span>pertinax</span> miles explicatis ordinibus parans <span class="italic">hastisque</span> feriens scuta qui habitus iram <span class="bold">pugnantium</span> concitat.</p>';
     
    $chaine_new = preg_replace_callback( 
    	'#\<span( class="([^"]*)")?>([^>]*)\</span>#Ui',
    	function ($matches) {
    		switch($matches[2])
    		{
    			case 'italic':
    				return '<i>'.$matches[3].'</i>';
    				break;
    			case 'bold':
    				return '<b>'.$matches[3].'</b>';
    				break;
    			default:
    				return $matches[3];
    		}
    	}, 
    	$chaine);
     
    var_dump( $chaine );
    var_dump( $chaine_new );
    ?>
    N.B. Ça ne fonctionnera pas correctement si plusieurs <span> sont imbriqués.
    Dernière modification par Invité ; 23/08/2019 à 17h11.

  4. #4
    Membre éclairé Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 413
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Là c'est pas la même catégorie. En ce qui concerne ma question, pas de PHP, juste du Regex dans EditPad Pro.

    Mais je pense avoir trouvé. Il suffisait, dans ma première expression d'ajouter un point d'interrogation après l'astérisque pour séparer les blocs. Ainsi :

    Rechercher : (<span class="bold">)(.*?)(</span>),
    Remplacer : <b>$2</b>

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

Discussions similaires

  1. recherche et remplacement multiples
    Par gdi73 dans le forum Requêtes et SQL.
    Réponses: 24
    Dernier message: 19/06/2007, 13h01
  2. Balise SPAN avec site HTML
    Par punisher999 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/03/2007, 01h07
  3. Valeur de donnée ds balise <SPAN>
    Par kuja2053 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 22/11/2006, 18h48
  4. Remplacer '\n' par balise <br/>
    Par Mr Meuble dans le forum Langage
    Réponses: 8
    Dernier message: 17/08/2006, 14h24
  5. Pb d'application de css à une balise span
    Par johndoe5e13 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 12/11/2005, 19h17

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