Problème pour ajouter du texte après <body.> avec ereg_replace[RESOLU]

Problème pour ajouter du texte après <body.> avec ereg_replace[RESOLU] - PHP - Programmation

Marsh Posté le 08-06-2005 à 23:06:23    

Je récupère une page html avec file_get_contents pour ajouter du texte en haut de la page et servir au surfer cette version modifiée.
Je veux faire ça bien en plaçant le texte après <body...> et non pas tout en haut même si celà marche quand même.
 
Pour faire celà j'essaye de détecter la balise <body> et j'ajoute derrière mon texte comme celà :
$page=file_get_contents($url);
$nouvelleversion = (ereg_replace("<[b|B][o|O][d|D][y|Y]>", "<body>Bonjour...", $page));
 
Celà fonctionne si ma balise <body> n'a pas de paramètre mais bien sûr certaines pages ont des paramètres... J'ai essayé cette version :
$page=file_get_contents($url);
$nouvelleversion = (ereg_replace("<[b|B][o|O][d|D][y|Y](.*)>", "<body>Bonjour...", $page));
Mais d'une part je perd les paramètres et d'autre part le (.*) contient toute la page et ne s'arrête pas au premier ">" après <body mais au dernier de la page! pffff :(
 
Voilà, désolé pour le roman, et vraiment un grand merci si quelqu'un peut m'aider, les regex c'est toujours la misère :(


Message édité par nargoroth le 09-06-2005 à 03:08:37
Reply

Marsh Posté le 08-06-2005 à 23:06:23   

Reply

Marsh Posté le 09-06-2005 à 00:19:59    

Si tu bosses sur des pages correctement ecrites (respectant le standard html ou xhtml) tu peux triturer le code a loisir avec  les fonctions de manipulation du DOM de php http://fr2.php.net/manual/fr/ref.domxml.php

Reply

Marsh Posté le 09-06-2005 à 00:20:34    

J'allais le dire :D

Reply

Marsh Posté le 09-06-2005 à 00:23:05    

la regex d'entrée est incorrecte de toute façon [:petrus75]
 
enfin, sauf si tu veux que ça puisse matcher

<||||>


[:petrus75]
 
J'ai déjà dit que je supportais pas les mecs qui bricolaient le code sans rien y comprendre? [:petrus75]
 
Puis comme tu réinjectes pas les groupes capturés dans le flux de sortie, tu m'étonne que tu les perds [:petrus75]


Message édité par masklinn le 09-06-2005 à 00:26:05

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-06-2005 à 00:24:19    

sinon tu peux utiliser :

Code :
  1. $pattern = '#<body([^>]*)>#Usi';
  2. $montrucenplus = 'blabla ...';
  3. $lapagehtml = file_get_contents($url);
  4. $lapagehtml = preg_replace($pattern , '<body \1>'.$montrucenplus , $lapagehtml);


Message édité par afbilou le 09-06-2005 à 00:26:17
Reply

Marsh Posté le 09-06-2005 à 00:47:14    

masklinn a écrit :

la regex d'entrée est incorrecte de toute façon [:petrus75]
 
enfin, sauf si tu veux que ça puisse matcher

<||||>


[:petrus75]
 
J'ai déjà dit que je supportais pas les mecs qui bricolaient le code sans rien y comprendre? [:petrus75]
 


 
[b|B][o|O][d|D][y|Y] match tous les formatages de body et non pas |||, cette partie marche très bien merci.
C'est quoi ton problème? Tu profites des forums pour te la jouer parceque tu trouves pas de meuf? Pfff je ne sais même pas pourquoi je te répond, dois-je comprendre que ce forum est peuplé de gars comme toi?
 
 
 
Sinon pour les autres, merci beaucoup je ne connais pas les DOM, je vais étudier ça et tester le code de afbilou également (peut-être plus rapide que de me mettre aux DOM).

Reply

Marsh Posté le 09-06-2005 à 00:50:33    

nargoroth a écrit :

[b|B][o|O][d|D][y|Y] match tous les formatages de body et non pas |||


Bah si ca macthe ||| aussi :p
 

Reply

Marsh Posté le 09-06-2005 à 00:52:53    

ce que tu voulais faire c'est : "(b|B)(o|O)"
mais il vaut mieux faire : "[bB][oO]"
et il faut faire : "bo" avec eregi (insensible a la casse)
 
le must etant d'utiliser les expression reguliere PCRE (Perl) : http://www.lumadis.be/regex/tuto_pcre.php

Reply

Marsh Posté le 09-06-2005 à 00:54:27    

nargoroth a écrit :

[b|B][o|O][d|D][y|Y] match tous les formatages de body et non pas |||, cette partie marche très bien merci.


Mon cul oui [:petrus75]
 
Fais le test, [b|B][o|O][d|D][y|Y] matche sur ||||, c'est pas ma faute si tu ne comprends pas la construction des regex [:petrus75]

Citation :

C'est quoi ton problème?


Si je répond que c'est toi, tu t'en vas? [:petrus75]

Citation :

Tu profites des forums pour te la jouer parceque tu trouves pas de meuf?


Non, c'est parce que je trouve pas de mec [:petrus75]
Pourquoi faut-il toujours qu'on assume que les gens sont hétérosexuels quand on tente de les insulter? [:petrus75]

Citation :

Pfff je ne sais même pas pourquoi je te répond, dois-je comprendre que ce forum est peuplé de gars comme toi?


Nope, je les ai tous jetés dehors, ils étaient insupportables [:petrus75]

afbilou a écrit :

le must etant d'utiliser les expression reguliere PCRE (Perl) : http://www.lumadis.be/regex/tuto_pcre.php


Je savais pas qu'il était possible d'utiliser des vraies regex en PHP, merci afbilou [:uriel]


Message édité par masklinn le 09-06-2005 à 00:56:43

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-06-2005 à 01:11:14    

Ok merci Afbilou, je vois l'erreur autant pour moi.
 
Cool Masklinn t'as l'air plus gentil que dans ton premier message.  
"Non, c'est parce que je trouve pas de mec  
Pourquoi faut-il toujours qu'on assume que les gens sont hétérosexuels quand on tente de les insulter?" Je kiff'  
Désolé d'être sorti du sujet, j'ai du taff a+

Reply

Marsh Posté le 09-06-2005 à 01:11:14   

Reply

Marsh Posté le 09-06-2005 à 02:11:33    

Nickel ton code, ça marche parfaitement.
Merci encore.

Reply

Sujets relatifs:

Leave a Replay

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