Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2006, 12h09   #1
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Par défaut Remplacer des balises à coups de regex

Bonjour Forum !!

ça fait un petit moment que je cherche sur le net et que je teste des solutions, mais rien ne fonctionne...

A priori, le problème est simple, mais je suis malheureusement incapable de le résoudre

J'ai un script XML. Je dois le parcourir (via PEAR::XML_Parser_Simple) pour en récupérer du contenu. Le problème, c'est qu'arrivé à la balise "<dataContent>", le contenu est html, et il m'est donc impossible de le récupérer, car PEAR parse le contenu.

J'ai donc pensé à remplacer le contenu html par du simili html, simplement remplacer dans le contenu de dataContent tous les caractères < par [ et > par ]

Bref, je me suis dit qu'à coup de regex, ça devrai bien fonctionner, mais je n'arrive pas à trouver la bonne...

le contenu html ne contient que des balises <p> et <org>, qui ressemble à une balise a href : <org idsrc="ISIN" value="FR0000xxxxxxx">ORGANISATION</org>

Et c'est ici que ça coince... j'aimerai remplacer

<org idsrc="ISIN" value="FR0000xxxxxxx">ORGANISATION</org>

par

[org idsrc="ISIN" value="FR0000xxxxxxx"]ORGANISATION[/org]

malheureusement, mes connaissances en regex sont trop limitées pour arriver à mon but...

Voici le pattern ou je suis arrivé (non-fonctionnel, bien entendu... ) :

^<org.(?)>$



Si quelqu'un voulait bien se pencher sur mon problème, je lui en serait vraiment reconnaissant.


Cordialement,


Thierry
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 12h17   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
Essaye en faisant un preg_replace :

Code :
preg_replace("#<org (.*?)>(.*?)<\/org>#mi", "[org $1]$2[/org]", $sujet);
J'ai pas teste mais ca ne devrait pas etre trop loinde la soluce.
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 12h24   #3
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Je me permet de reprendre un peu la chaine précédente :

Code :
$resultat = preg_replace_all("#<org([^>]*)>([^<]*)<\/org>#Umi", "[org$1]$2[/org]", $sujet);
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 12h26   #4
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
tu as eu raison, mais j'ai eu la flemme de retrouver la syntaxe exacte.
je pense que l'autre dois marcher dans 90% des cas.
Par contre il ,'existe pas de preg_replace_all.
Juste un preg_match_all et preg_replace
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 12h51   #5
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Merci beaucoup pour votre aide

via cette page : http://www.rexv.org/

j'avais trouvé la regex suivante en mode PCRE

Code :
^<org\s((.|\n)+?)>((.|\n)+?)<\/org>
avec le remplacement mais ça ne fonctionnait pas ensuite avec php...

Merci encore !
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 12h56   #6
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par stunti
Par contre il n'existe pas de preg_replace_all.
Juste un preg_match_all et preg_replace
Oups, oui en effet ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2009, 22h20   #7
Invité de passage
 
Inscription : avril 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 1
Points : 1
Points : 1
Par défaut doubler les apostrophes pour le javascript

salut tout le monde

He je suis a la recherche dune expression reguliere qui permettra de corriger les apostraphes dans une balies precis.

exemple :
<a href="#" onclick="AfficherFiche('fr','O'LEARY,MARIE-LISE',event); return false;" autocomplete="off">O'LEARY MARIE-LISE</a>

j aimerais que quand c est <a href... que ' (apostrophe soit avec \ entre les parantese mais seulement si elle se trouve entre entre apostrophe).

donc le resultat il faut que ca donne
<a href="#" onclick="AfficherFiche('fr','O\'LEARY,MARIE-LISE',event); return false;" autocomplete="off">O'LEARY MARIE-LISE</a>

j ai chercher mais je trouve pas la solution. qqun peut m aider ?

merci et a bientot

fred s.
elzeart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2009, 08h48   #8
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
2 possibilités :

* Soit le code que tu cherches a "corriger" est du code généré par un de tes scripts => Dans ce cas là, tu corrige le script d'origine car c'est LUI qui génère cette erreur, donc c'est lui qui doit etre corrigé
* Soit le code que tu cherches a "corriger" est du code généré par une autre page ou un autre script sur lequel tu n'a pas le controle... et dans ce cas là, si tu veux un bon conseil : change de script.

Dans tout les cas, pas de regexp a utiliser ici. Il FAUT corriger le script d'origine ou en changer.
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h31.


 
 
 
 
Partenaires

Hébergement Web