regexp :trouver les balises et meme celles avec des balises PHP dedans

regexp :trouver les balises et meme celles avec des balises PHP dedans - PHP - Programmation

Marsh Posté le 26-05-2005 à 22:28:06    

Bonjour je cherche une expression qui trouve les balises HTML avec des balises PHP dedans comme ceci :

Code :
  1. <a href="<?php echo "?page=formations&lang=$lang"; ?>" >


 
donc ça doit me renvoyer cette chaine ci dessus ...
j'arrive a trouver les balises sans PHP dedans mais c'est tout :(
grace à ceci :

Code :
  1. <[^>]+>


 
voila, j'ai regardé la doc des regexp, mais j'arrive pas a my faire, si quelquun peut maider ...
merci !! :jap:
 
edit :
en fait mon but c'est de prendre un page HTML avec du PHP pas compilée, et de pouvoir editer le texte entre les balises sans toucher aux balises ...
j'ai pensé a faire deux tableaux grace a split() : un tableau avec les balises, et lautre avec les textes ...
ça marche tres bien quand il n'y a pas de balise php dans celles html ...


Message édité par phenxdesign le 26-05-2005 à 22:43:04
Reply

Marsh Posté le 26-05-2005 à 22:28:06   

Reply

Marsh Posté le 27-05-2005 à 00:12:10    

Elles sont XHTML valid tes pages ? [:dawa]

Reply

Marsh Posté le 27-05-2005 à 08:52:13    

pourquoi ne pas recup juste les balise php ? avec une regexp du genre :

<\?php(.*)\?>

Reply

Marsh Posté le 27-05-2005 à 09:15:51    

FlorentG a écrit :

Elles sont XHTML valid tes pages ? [:dawa]


non, mais c'est pas le probleme  :pt1cable:

Reply

Marsh Posté le 27-05-2005 à 09:17:48    

soju a écrit :

pourquoi ne pas recup juste les balise php ? avec une regexp du genre :

<\?php(.*)\?>



ben non, jutement, je peux pas ...
mais il me faudrait une regexp qui fait en fait :
"Toutes les chaines qui commencent avec un < , qui peuvent contenir <? ou ?> mais pas > et qui finissent par > "

Reply

Marsh Posté le 27-05-2005 à 09:42:35    

phenxdesign a écrit :

non, mais c'est pas le probleme  :pt1cable:


Si justement :o Si tes pages auraient été valides, ça aurait été fait en 10 secondes avec des fonctions DOM :o Voilà pourquoi c'est important d'être valide ;)

Reply

Marsh Posté le 27-05-2005 à 09:52:38    

hum, quel est le rapport ? tu peux m'expliquer ce que sont les fonctions DOM ?
parce que c'est bien sur des pages non compilées que je travaille pour faire ce que je veux faire ...

Reply

Marsh Posté le 27-05-2005 à 09:55:49    

En gros, ça te permetterais de faire ça :

$page = domxml_open_file('page.html');
 
$h2_list = $page->get_element_by_tagname('h2');
h2[0].setContent('Titre machin bidule');
 
$page->dump_file('page.html');


Et fini, tu viens de mettre 'Titre machin bidule' dans le premier h2 de la page, et c'est sauvegardé :sol:

Reply

Marsh Posté le 27-05-2005 à 09:59:55    

FlorentG a écrit :

En gros, ça te permetterais de faire ça :

$page = domxml_open_file('page.html');
 
$h2_list = $page->get_element_by_tagname('h2');
h2[0].setContent('Titre machin bidule');
 
$page->dump_file('page.html');


Et fini, tu viens de mettre 'Titre machin bidule' dans le premier h2 de la page, et c'est sauvegardé :sol:


hou punaize !! ça a l'air d'etre bien, mais c'est pas du tout ce que je veux faire :D
bon sang, ya pas un moyen de faire ce que je veux faire avec une regexp ?

Reply

Marsh Posté le 27-05-2005 à 10:00:34    

C'est quoi que tu veux faire précisément ?

Reply

Marsh Posté le 27-05-2005 à 10:00:34   

Reply

Marsh Posté le 27-05-2005 à 10:03:46    

Premier post :o
c'est pas clair ?  :whistle:

Reply

Marsh Posté le 27-05-2005 à 10:05:34    

en fait je dois traduire des pages html (d'ailleurs pas entierement html, vu qu'elles n'ont que le body) mais ce n'est pas moi qui vais les traduire, c'est quelqu'un qui n'y connais  rien en info (donc html) et donc elle ne doit pas modifier les balises (ni meme les voir)

Reply

Marsh Posté le 27-05-2005 à 10:11:51    

phenxdesign a écrit :

"Toutes les chaines qui commencent avec un < , qui peuvent contenir <? ou ?> mais pas > et qui finissent par > "


un truc du genre :

#<(?!\?)(.*)(?<!\?)>#Us


?  

Reply

Marsh Posté le 27-05-2005 à 10:16:08    

hum surement ... Merci !! mais peux tu m'expliquer comment elle fonctionne ?
la chaine commence par < mais pas par <? et finit par > mais pas par ?> , c'est ça ?
a quoi sert le Us ? et les dieses ?
mais aussi, je veux que ça retourne aussi les balises PHP qui ne sont pas a l'interieur de balises HTML


Message édité par phenxdesign le 27-05-2005 à 10:16:27
Reply

Marsh Posté le 27-05-2005 à 10:18:38    

phenxdesign a écrit :

la chaine commence par < mais pas par <? et finit par > mais pas par ?> , c'est ça ?
a quoi sert le Us ? et les dieses ?

oui
http://fr.php.net/manual/fr/refere [...] syntax.php
 

phenxdesign a écrit :

mais aussi, je veux que ça retourne aussi les balises PHP qui ne sont pas a l'interieur de balises HTML

donc pourquoi ne pas recupérer seulement les balises php ?

Reply

Marsh Posté le 27-05-2005 à 10:21:06    

parce que je veux faire un formulaire qui ne permet que de modifier le texte, mas les balises PHP ni HTML ...
en fait, ma premiere regexp fonctionne, mais seulement quand on n'a pas de balises PHP dans des balises html, comme dans mon exemple ...

Reply

Marsh Posté le 27-05-2005 à 10:22:11    

(merci pour la doc PHP, je l'ai deja en .chm :))

Reply

Marsh Posté le 27-05-2005 à 10:25:33    

et par exemple pour les trucs du genre  

Code :
  1. <b>texte à traduire</b>


tu fais quoi ? car le texte n'est pas dans le tag

Reply

Marsh Posté le 27-05-2005 à 10:31:27    

ben je trouve une balise <b> et une balise </b> separées ... comme ça je peux traduire le texte, tout ce qui n'es pas entre < et > en fait

Reply

Marsh Posté le 27-05-2005 à 20:18:13    

j'ai telechargé le logiciel Regex Coach, il est bien, mais j'ai toujours pas trouvé :(

Reply

Marsh Posté le 30-05-2005 à 11:19:11    

en fait je voudrais trouver comme on dit "ne contient pas > ni ?>" ou " ne se termine pas par ?> mais > "

Reply

Marsh Posté le 01-06-2005 à 09:51:18    

Je n'ai toujours pas trouvé, mis j'ai pensé a un truc : si je remplacais les <? et les ?> qu'il y a dans les balises HTML par [? et ?] , ça irait, il suffirait alor de les remettre apres...
Mais comment faire ? j'ai cherché, mais les regexp, c'est pas facile, merci de maider :( :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed