|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() Inscription : janvier 2007 Messages : 622 ![]() |
Bonjour,
J'ai dans ma base de données des textes qui contiennet des balises de gras et d'italique que je désire éliminer pour les faire passer en RSS. $xml2 = "<i>«Il est <b>juste que ce qui est juste soit suivi</b>, il est nécessaire que ce qui est le plus fort soit suivi. La justice sans la force est impuissante, la force sans la justice est tyrannique. La justice sans force est contredite parce qu’il y a toujours des méchants. La force sans la justice est accusée. Il faut donc mettre ensemble la justice et la force, et pour cela, faire que ce qui est juste soit fort, ou que ce qui est fort soit juste.»</i> Pascal"; Je me suis démelé avec les expressions régulières mais je n'ai pas trouvé mon bonheur. Code :
$xml2 = preg_replace('/<(i|b)[^>]*>(.*?)<\/(i|b)>/i', '$2', $xml2); |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 827 ![]() |
strip_tags( ) ne te convient pas ?
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Inscription : janvier 2007 Messages : 622 ![]() |
Merci de la réponse rapide.
Le problème avec strip_tags que je viens de découvrir (merci) est que je traite mon résultat xml (rss) avant de l'enregistrer dans mon fichier (il n'y a pas moyen de le faire avant) et ça m'enlève tous mes tags html. Ce qui m'intéresse, c'est uniquement <I> et <B>. C'est pour cela que je me suis orienté vers les expressions régulières. Merci encore. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Essaie avec
Code :
$xml2 = preg_replace('/<(i|b)[^>]*>(.*?)<\/(i|b)>/si', '$2', $xml2);
__________________
Testez le forum Fire Soft Board, un forum libre, gratuit et français. Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP. |
|
|
00
|
|
|
#5 | ||
|
Membre expérimenté
![]() Inscription : janvier 2007 Messages : 622 ![]() |
Merci de l'effort mais ne fonctionne toujours pas. Les balises imbriquées ne sont pas prise en compte.
Mais : Code :
Merci. |
||
|
|
00
|
|
|
#6 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Code :
$xml2 = preg_replace('#<([ib])[^>]*>(.*?)</\1>#si', '\2', $xml2); |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : juin 2003 Messages : 15 ![]() |
Bonjour,
La dernière expression régulière posté ne fonctionnera pas dans ce cas : exemple: Code :
Mais attention, dans le cas suivant <span>test1</span><span>test2</span>, je dois récupéré en premier <span>test1</span>, puis <span>test2</span> et non pas test1</span><span>test2 Bref gérer l'imbrication intelligemment J'ai essayé de tout les côtés mais pas encore réussi (d'ailleurs, est-ce possible ?) Merci de votre aide |
||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
En fait, c'est le même probleme que le jeu des parentheses. Il te faut un langage à pile, les regex ne suffiront pas.
|
|
|
00
|
|
|
#9 | ||
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
J'ai reussi à te pondre un ptit truc :
Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juin 2003 Messages : 15 ![]() |
Merci pour ta réponse !
En fait, j'avais déja fais quelque chose mais sans regexp (uniquement à base de strpos, etc...) Ca marche mais c'est fastidieux. J'ai voulu migré mon code avec uniquement des regexp mais ce n'est à priori donc pas possible. Je vais donc, en m'inspirant de ton exemple, faire une solution mixte avec des regexp et du code pour la pile |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com