Page 1 sur 1

regexp pour modifier html

Posté : 07 août 2014, 13:47
par Invité
Bonjour à tous,

J'ai besoin d'aide pour créer une expression régulière qui ajoute un champ input à l'intérieur de toute balises <form>....</form> d'une page, si et seulement si ce champ input n'existe pas encore dans l'occurrence <form>....</form> en question.

Je sais que que le forum, il n'est pas bienvenu de poser une question et d'attendre que quelqu'un ponde du code alors qu'on ne manifeste aucun effort ou recherche préalable.

Je fais souvent des regexp et j'arrive généralement à m'en sortir sans aide. Mais là, je sèche complètement et j'ai besoin d'aide au moins pour le raisonnement.
Faut-il une fonction avec plusieurs regexp et des conditions, ou une seule regexp suffit-elle pour effectuer l'opération.

En vous remerciant pour vos réponses.

Re: regexp pour modifier html

Posté : 07 août 2014, 13:55
par Invité
Remarque:
Au départ, je suis arrivé à mon objectif en utilisant DOMDocument.
Avec loadHtml(), il est assez simple de modifier le document html et de faire un saveHTML() après.

Malheureusement, loadHTML/SaveHTML dégradent mon document HTML d'origine en rajoutant des balises <body>, <head> et <html> à des endroits non attendus. De de nombreuses balises <script> et leur contenu sont enlevées de mon document en rendu.

J'ai vu qu'à partir de php 5.4, il est possible d'utiliser $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
Les options permettent de préserver le document d'origine sans en altérer le contenu.

Le pb est que mon script doit être compatible avec PHP 5.3
Si vous avez des suggestions qui me permettraient d'éviter de réécrire mon code en utilisant des regexp, je suis preneur également.

Re: regexp pour modifier html

Posté : 07 août 2014, 15:12
par sirakawa
Chalut,
A vue de perchoir aux oiseaux, pourquoi ne pas charger le fichier avec filegetcontents (trait d'union qq part), le modifiert avec ca que tu veux ou peux, et le sauvegarder avec fileputcontents (même remarque sur les traits de désunion).
Si le formulaire est correctement foutu, il suffit de repérer la balise de départ par un strpos et celle de fin par un strpos et de chercher entre deux si on voit un <input> Si on n'en voit pas, il suffit de chercher le > du form et de servir de strstr à ce niveau.

Re: regexp pour modifier html

Posté : 07 août 2014, 16:04
par Invité
Bonjour,

Meri bcp pour ta réponse, elle m'a mise sur la bonne voie.
Voici ce que je fais finalement:

- Plutôt que de tester "si et seulement si le champ n'est pas dans le formulaire", je supprime systématiquement toutes les occurrences du champ avec str_replace. Comme cela je suis sûr que ce champ n'est pas dans le code html.

- Ensuite je remplace toutes les occurrences de </form> par <input type="text" name="monchamp" /></form>

Et voilà comme disent les anglais.
Merci bcp.

Re: regexp pour modifier html

Posté : 07 août 2014, 17:23
par sirakawa
Si c'est résolu, active le bouton hareng Saur