regex <p></p>
8 messages
• Page 1 sur 1
-

rudddy - WRInaute accro

- Messages: 2570
- Inscription: 1 Aoû 2007
regex <p></p>
Bonjour,
j'ai une variable $texte en BD qui commence toujours par <p> et qui se termine par </p>.
donc en gros :
j'aimerais faire une regex qui me convertisse :
en
car si je code :
merci à vous
j'ai une variable $texte en BD qui commence toujours par <p> et qui se termine par </p>.
donc en gros :
- Code: Tout sélectionner
$texte = '<p>bla bla .<br> coucou etc etc ...</p>';
j'aimerais faire une regex qui me convertisse :
- Code: Tout sélectionner
$texte = '<p>bla bla .<br> coucou etc etc ...</p>';
en
- Code: Tout sélectionner
$texte = '<p><strong>bla bla .<br> coucou etc etc ...</strong></p>';
car si je code :
- Code: Tout sélectionner
$texte = '<strong>'.$texte.'</strong>';
merci à vous
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: regex <p></p>
Peut-être :
- Code: Tout sélectionner
$texte = preg_replace('`^<p>`', '<p><strong>', $texte);
$texte = preg_replace('`</p>$`', '</strong></p>', $texte);
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: regex <p></p>
- Code: Tout sélectionner
$rep = array('<p>' => '<p><strong>', '</p>' => '</strong></p>');
echo strtr($text, $rep);
C'est "un peu" plus optimisé, mais bon.
Edit et tant qu'on y est :
- Code: Tout sélectionner
$rep = array('<p>' =>'<p><strong>', '</p>' => '</strong></p>', '<br>' => '<br />');
et ça n'a pas été testé mais "devrait" marcher.
Pour les benchmarks : http://m-fernandez.developpez.com/articles/php/bench/#LVIII
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: regex <p></p>
strtr() risque de faire la modifiaction sur toutes les balises trouvées alors que la regex s'occupera uniquement de la première et la dernière.
Maintenant, en y réfléchissant, si rudddy ajoute le balise <strong>, je suppose que le champ ne contiendra qu'un seul paragraphe.
Du coup, la solution de Julia41 devrait être la meilleur (consommant moins de ressources car pas de regex)
Maintenant, en y réfléchissant, si rudddy ajoute le balise <strong>, je suppose que le champ ne contiendra qu'un seul paragraphe.
Du coup, la solution de Julia41 devrait être la meilleur (consommant moins de ressources car pas de regex)
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: regex <p></p>
Sinon, stocker du html dans la base de données (bien que cela se fasse), je trouve pas ça génial, tu es toujours dépendant de ce qui est dedans (preuve maintenant).
Tu pourrais utiliser la commande mysql "replace" pour nettoyer tout tes <p> et ainsi les coder en dur. Il y avait une petite faille SQL il y a quelques mois au sujet du html dans le base de données et de son execution (c'était possible qu'en ligne de commande).
Bon, fait un backup avant quand même mais la structure est la suivante :
Ca te permet de faire un "gros" ménage, mais fait un backup, c'est pas testé, mais normalement c'est par défault "non sensitive". Sinon, c'est plutôt utile pour les migrations de site HTML => Strict. Je m'en étais servi lors d'un changement de parser BBCode aussi. Plutôt que de faire un parser "lourd" qui parse à chaque fois et corrige les fautes de :
strong italique mon text strong italique. Les commandes update font les replaces et au final ton site est "plus" rapide au niveau du parsing.
Tu pourrais utiliser la commande mysql "replace" pour nettoyer tout tes <p> et ainsi les coder en dur. Il y avait une petite faille SQL il y a quelques mois au sujet du html dans le base de données et de son execution (c'était possible qu'en ligne de commande).
Bon, fait un backup avant quand même mais la structure est la suivante :
- Code: Tout sélectionner
UPDATE table SET ton_champ_txt = REPLACE(ton_champ_txt, '<p>,'');
UPDATE table SET ton_champ_txt = REPLACE(ton_champ_txt, '</p>,'');
UPDATE table SET ton_champ_txt = REPLACE(ton_champ_txt, '<br>,'<br />');
Ca te permet de faire un "gros" ménage, mais fait un backup, c'est pas testé, mais normalement c'est par défault "non sensitive". Sinon, c'est plutôt utile pour les migrations de site HTML => Strict. Je m'en étais servi lors d'un changement de parser BBCode aussi. Plutôt que de faire un parser "lourd" qui parse à chaque fois et corrige les fautes de :
strong italique mon text strong italique. Les commandes update font les replaces et au final ton site est "plus" rapide au niveau du parsing.
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
