Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
585 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer tout ce qu'il y a entre deux < >

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer tout ce qu'il y a entre deux < >

n°1080988
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 15:47:32  profilanswer
 

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

mood
Publicité
Posté le 12-05-2005 à 15:47:32  profilanswer
 

n°1081002
afbilou
pouet your life
Posté le 12-05-2005 à 15:53:14  profilanswer
 
n°1081012
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 15:58:10  profilanswer
 

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 :)

n°1081014
cesarr89
Posté le 12-05-2005 à 15:59:20  profilanswer
 

Les regexp

n°1081018
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 16:01:48  profilanswer
 

sachant que je n'ai pas la possibilité de modifier le fichier txt :)

n°1081027
afbilou
pouet your life
Posté le 12-05-2005 à 16:06:42  profilanswer
 

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 :D


Message édité par afbilou le 12-05-2005 à 16:29:27
n°1081044
afbilou
pouet your life
Posté le 12-05-2005 à 16:13:37  profilanswer
 

Je me permets quelques conseils pour ton site web :}

Citation :


<a href="http://www.mycreazone.com">
<div id="header"></div>
</a>


 
n'est pas valide car une balise <a> de type inline ne doit pas contenir de balise block comme <div>
 

Citation :


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


 
1 fois ca suffit :p
 

Citation :


<div id="menu"><div align="center">


 
tu peux faire des classes et affecter plusieurs classes a un meme element <div class="menu center"> par exemple
 

Citation :


<div id="titre">.:: Bienvenue ::.</div>


 
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 ?

n°1081050
soju
One shot !
Posté le 12-05-2005 à 16:17:22  profilanswer
 

afbilou a écrit :

$pattern = "#<([a-z]+)>.*</\1>#i";
preg_replace($pattern , "" , $string);



avec ton code il va perdre le texte dans <td>Blablabla</td> par exemple...

n°1081057
afbilou
pouet your life
Posté le 12-05-2005 à 16:20:45  profilanswer
 

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)

n°1081081
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 16:33:01  profilanswer
 

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 ;)


Message édité par Mush22 le 12-05-2005 à 16:33:25
mood
Publicité
Posté le 12-05-2005 à 16:33:01  profilanswer
 

n°1081088
afbilou
pouet your life
Posté le 12-05-2005 à 16:38:18  profilanswer
 

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 :)

n°1081092
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 16:40:48  profilanswer
 

il trouve il trouve... mais le pti bout de code ne supprime rien du tout pour etre honnete :)

n°1081103
afbilou
pouet your life
Posté le 12-05-2005 à 16:46:49  profilanswer
 

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"

n°1081115
soju
One shot !
Posté le 12-05-2005 à 16:51:24  profilanswer
 

afbilou a écrit :

Je viens de tester ca

t'es sur ?  ;)  
le tag script est encore là

n°1081133
afbilou
pouet your life
Posté le 12-05-2005 à 17:01:42  profilanswer
 

Moué euh ...
 

Citation :


<?
 
$pattern = '#<([a-z]+)[^>]*>.*</\1>#Ui';
 
$string = "<a href='www.google.com'>Super balbla</a> wahouuuu <script type=\"text/javascript\">var a=0;</script>";
 
$string = strip_tags($string , '<script>');
$string = preg_replace($pattern , "" , $string);
 
echo $string;
 
?>


 
na :p

n°1081147
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:06:29  profilanswer
 

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


Message édité par Mush22 le 12-05-2005 à 17:09:06
n°1081154
afbilou
pouet your life
Posté le 12-05-2005 à 17:09:22  profilanswer
 

Non <ScRiPt>, <scipT> etc ... sont traites de la meme facon.
C'est grace a l'option i a la fin du pattern.

n°1081157
afbilou
pouet your life
Posté le 12-05-2005 à 17:11:14  profilanswer
 

Ha non cette fois tout marche :p
J'avais oublié la derniere affectation la premiere fois c'est pour ca que ca marchait pas ^^ (et le pattern est mieux maintenant)

n°1081160
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:13:09  profilanswer
 
n°1081166
afbilou
pouet your life
Posté le 12-05-2005 à 17:15:17  profilanswer
 

Wé j'utilise -moz dans les styles ... pas envie de m'en priver :p
c'est le seul truc pas standard :)

n°1081173
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:16:31  profilanswer
 

non mais stétune joke...  
 
Tu as édité le code du haut? ou c toujours le meme, pas corrigé?

n°1081185
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:23:30  profilanswer
 

$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

n°1081187
afbilou
pouet your life
Posté le 12-05-2005 à 17:24:33  profilanswer
 

Dans ce cas ... Met "Umsi" en parametre a la fin du pattern au lieu de Ui

n°1081192
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:27:01  profilanswer
 

Ahhhhhhh :)  
 
C quoi la différence?

n°1081198
afbilou
pouet your life
Posté le 12-05-2005 à 17:30:12  profilanswer
 

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' :D

n°1081205
Mush22
Le temps se chargera du reste.
Posté le 12-05-2005 à 17:32:16  profilanswer
 

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...


Message édité par Mush22 le 12-05-2005 à 17:42:03
n°1081265
afbilou
pouet your life
Posté le 12-05-2005 à 18:16:02  profilanswer
 

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 :/

n°1082014
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 11:33:46  profilanswer
 

J'ai tout betement mis ca :
 
$string = strip_tags($string , '<script>','<table>','<tr>');
 
Ca n'a pas l'air de marcher...

n°1082026
FlorentG
Unité de Masse
Posté le 13-05-2005 à 11:42:46  profilanswer
 

Mush22 a écrit :

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 :)


Si ton site est XHTML valide, c'est culcul :

Code :
  1. // Ouverture doc
  2. $doc =& domxml_open_file('fichier.html');
  3. // Exemple pour les scripts
  4. $script_list =& $doc->get_elements_by_tagname('script');
  5. foreach($script_list as $script) {
  6.   $child_list =& $script->child_nodes();
  7.   foreach($child_list as $child) {
  8.     $script->remove_child($child);
  9.   }
  10. }
  11. // Sauvegarde doc
  12. $dom->dump_file('fichier.html');

n°1082036
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 11:47:10  profilanswer
 

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


Message édité par Mush22 le 13-05-2005 à 11:47:58
n°1082047
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 11:54:14  profilanswer
 

Citation :

Bon les mecs, on est en 2005, faudrait quand-même songer à virer ces frames et ces tableaux.


 
J'aime ces phrases :)

n°1082087
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 12:17:34  profilanswer
 

:( la page n'est pas valide XHTML, ni même HTML...

n°1082090
FlorentG
Unité de Masse
Posté le 13-05-2005 à 12:23:16  profilanswer
 

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...

n°1082099
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 12:29:21  profilanswer
 

mouais :s, tu vois rien d'autre? :-d

n°1082141
afbilou
pouet your life
Posté le 13-05-2005 à 13:09:33  profilanswer
 

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


Message édité par afbilou le 13-05-2005 à 13:10:13
n°1082149
FlorentG
Unité de Masse
Posté le 13-05-2005 à 13:15:16  profilanswer
 

Il pourra rien faire avec domxml, vu que c'est pas valide :( cf. ma solution

n°1082201
Mush22
Le temps se chargera du reste.
Posté le 13-05-2005 à 13:53:10  profilanswer
 

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.

n°1085302
Mush22
Le temps se chargera du reste.
Posté le 16-05-2005 à 12:47:47  profilanswer
 

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?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer tout ce qu'il y a entre deux < >

 

Sujets relatifs
Sélectionner les documents d’un fichier et tous les supprimersupprimer une feuille a partir d1 combobox
Supprimer un dossier d'un ftp par interface websupprimer enregistrement
comment supprimer la croix "pour fermer" d un userformsupprimer les vides dans un tableau
héritage : ajouter et supprimer des objetssupprimer des lignes d'une feuille contenant des valeurs
Supprimer une chaine de caractère ds plusieurs fichiers .txtSupprimer les balises xmlns du résultat
Plus de sujets relatifs à : Supprimer tout ce qu'il y a entre deux < >


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR