Supprimer tout ce qu'il y a entre deux < > - PHP - Programmation
Marsh Posté le 12-05-2005 à 15:58:10
ouaip, ca c sympa lol
mais je voudrais egalement supprimer ce qu'il y a entre certaines balise, genre zapper les <script></script> ainsi que ce qu'il y a a l'interieur
Mais merci de la reponse
Marsh Posté le 12-05-2005 à 16:01:48
sachant que je n'ai pas la possibilité de modifier le fichier txt
Marsh Posté le 12-05-2005 à 16:06:42
http://fr.php.net/manual/fr/function.preg-replace.php
$pattern = "#<([a-z]+)>.*</\1>#Usi";
preg_replace($pattern , "" , $string);
Pour supprimer les balises et leur contenu
Edit : rajout du 'Us' dans le pattern ... ca evitera des soucis
Marsh Posté le 12-05-2005 à 16:13:37
Je me permets quelques conseils pour ton site web :}
Citation : |
n'est pas valide car une balise <a> de type inline ne doit pas contenir de balise block comme <div>
Citation : |
1 fois ca suffit
Citation : |
tu peux faire des classes et affecter plusieurs classes a un meme element <div class="menu center"> par exemple
Citation : |
autant utiliser <h1> ... <h6>
C'est plus court a ecrire et c'est sémantiquement plus coherent ^^
Et puisque tu utilises les CSS autant ne plus mettre de "style" dans les balises non ?
Marsh Posté le 12-05-2005 à 16:17:22
afbilou a écrit :
|
avec ton code il va perdre le texte dans <td>Blablabla</td> par exemple...
Marsh Posté le 12-05-2005 à 16:20:45
Bah il peut faire un striptag en permettant certaines balises comme script.
Ensuite il mouline le resultat avec "mon code" : il effacera les balises restantes et leur contenu. (byebye script)
Marsh Posté le 12-05-2005 à 16:33:01
Merci pour tes conseils a propos de mon site afbilou
Mais je ne l'ai pas touché depuis bien longtemps et mes connaissances en css ont bien évolué depuis
Marsh Posté le 12-05-2005 à 16:38:18
Je me permettais juste de le dire parce que tu avais l'air soucieux de respecter les normes w3c (cf le lien vers le validateur sur ton site) ^^ c'est tout ^^
en esperant que ton probleme de PHP ait trouvé solution
Marsh Posté le 12-05-2005 à 16:40:48
il trouve il trouve... mais le pti bout de code ne supprime rien du tout pour etre honnete
Marsh Posté le 12-05-2005 à 16:46:49
Je viens de tester ca :
<?
$pattern = "#<([a-z]+)>.*</\1>#Usi";
$string = "<a href='www.google.com'>Super balbla</a> wahouuuu <script type=\"text/javascript\">var a=0;</script>";
$string = strip_tags($string , '<script>');
preg_replace($pattern , "" , $string);
echo $string;
?>
affiche : "Super balbla wahouuuu"
Marsh Posté le 12-05-2005 à 16:51:24
ReplyMarsh Posté le 12-05-2005 à 17:01:42
Moué euh ...
Citation : |
na
Marsh Posté le 12-05-2005 à 17:06:29
il tiens compte de la casse?
Parce que en copiant ton code, je n'ai plus les balises (striptags), mais j'ai toujours la balise script ainsi que son contenu
Marsh Posté le 12-05-2005 à 17:09:22
Non <ScRiPt>, <scipT> etc ... sont traites de la meme facon.
C'est grace a l'option i a la fin du pattern.
Marsh Posté le 12-05-2005 à 17:11:14
Ha non cette fois tout marche
J'avais oublié la derniere affectation la premiere fois c'est pour ca que ca marchait pas ^^ (et le pattern est mieux maintenant)
Marsh Posté le 12-05-2005 à 17:13:09
ReplyMarsh Posté le 12-05-2005 à 17:15:17
Wé j'utilise -moz dans les styles ... pas envie de m'en priver
c'est le seul truc pas standard
Marsh Posté le 12-05-2005 à 17:16:31
non mais stétune joke...
Tu as édité le code du haut? ou c toujours le meme, pas corrigé?
Marsh Posté le 12-05-2005 à 17:23:30
$string = trim($string);
$pattern = '#<([a-z]+)[^>]*>.*</\1>#Ui';
$string = strip_tags($string , '<script>');
$string = preg_replace($pattern , "" , $string);
Ca c mon bout de code, sachat que $string est un fichier html, en .txt
Marsh Posté le 12-05-2005 à 17:24:33
Dans ce cas ... Met "Umsi" en parametre a la fin du pattern au lieu de Ui
Marsh Posté le 12-05-2005 à 17:30:12
le m va traiter la chaine comme une chaine contenant des lignes multiples.
et le s va permettre au "." de pouvoir matcher les \n et/ou \r
Et si tout ca ne marche toujours pas ... peut-etre qu'il ne faut pas mettre de 'm' en option du fait k'il y a un 's' et donc dans ce cas met 'Uis'
Marsh Posté le 12-05-2005 à 17:32:16
non non c bon, parfait...
Par contre, est-ce qu'on peut etre un peu plus précis, et par exemple, zapper la balise et son contenu :
<td class="pghdrdtxt" width="2%">::</td>
<td class="pghddbltxt" width="30%">Technote</td>
zapper la premiere ligne, mais pas la 2eme.
Edit :
par exemple dans le strip tags, empecher la suppression de plusieurs balises...
Marsh Posté le 12-05-2005 à 18:16:02
Tu peux preciser plusieurs balises a conserver dans le strip_tags.
et pour zapper seulement certain contenu ... va falloir etre plus precis et ecrire des expressions regulieres qui vont bien koi
Marsh Posté le 13-05-2005 à 11:33:46
J'ai tout betement mis ca :
$string = strip_tags($string , '<script>','<table>','<tr>');
Ca n'a pas l'air de marcher...
Marsh Posté le 13-05-2005 à 11:42:46
Mush22 a écrit : ouaip, ca c sympa lol |
Si ton site est XHTML valide, c'est culcul :
Code :
|
Marsh Posté le 13-05-2005 à 11:47:10
hum, ca a l'air sympa ca
Fatal error: Call to a member function on a non-object in /var/www/html/***********/achat/rec/curl.php on line 19
Marsh Posté le 13-05-2005 à 11:54:14
Citation : Bon les mecs, on est en 2005, faudrait quand-même songer à virer ces frames et ces tableaux. |
J'aime ces phrases
Marsh Posté le 13-05-2005 à 12:23:16
Ouch Du coup ça va être dur... C'est là l'interêt d'être valide : on peut triturer la structure et le contenu comme on veut...
Marsh Posté le 13-05-2005 à 13:09:33
C'est toi qui ecrit le texte que tu veux filtrer ? ou bien ce sont les utilisateurs de ton site via un forum/livre d'or ?
Si c'est toi l'auteur ... tu peux mettre des marqueurs dans les balises a virer ou a conserver ! Par exemple mettre dans l'attibut title un genre de : title="rm"
En filtrant ton fichier tu vas pouvoir virer les balises specifiques ayant l'attribut title a "rm" par exemple.
http://www.php.net/manual/fr/ref.domxml.php
Marsh Posté le 13-05-2005 à 13:15:16
Il pourra rien faire avec domxml, vu que c'est pas valide cf. ma solution
Marsh Posté le 13-05-2005 à 13:53:10
je n'ai aps acces au fichier texte autrement que par un curl ou fgetss, et ce n'est pas moi qui le génére non plus.
C'est la le probleme, par contre, il y a des balises récurante, qui reviennent toujours au meme endroit (type <td style="blabla"[...]></td> ), et c'est ces balises meme que je souhaite récupérer.
Marsh Posté le 16-05-2005 à 12:47:47
Disons pour etre précis, que dans cette page, je ne veux récupérer que le contenu de la balise :
<TABLE width="80%" class="blabla"></table>
Comment je m'y prends?
Marsh Posté le 12-05-2005 à 15:47:32
Bonjour !
Je souhaite dégoter une petite fonction qui me permettrais de supprimer d'un fichier txt, tout caractere entre deux < >.
Exemple concret :
j'ai
<table border=0 width=100>
<tr>
<td>Blablabla</td>
</tr>
</table>
Et je voudrais récupérer que "Blablabla".
J'ai essayé avec une fonction eregi, en vain.
Merci pour le coup de main.
Mush