[PHP] Nettoyage de texte

Nettoyage de texte [PHP] - PHP - Programmation

Marsh Posté le 21-01-2008 à 19:42:03    

bonjour,
 
Je souhaiterais faire un peu de nettoyage de texte que je récupere d'une base de donnée phpbb3 :
j'imagine que je trouverais mon bonheur avec la fonction preg_replace mais je ne comprends pas bien son fonctionnement...
 
je voudrais supprimer ce genre de chaine de caractère :
 

Code :
  1. bla bla bla bla
  2. <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
  3. blu blu blu blu
  4. <!-- m --><a class="postlink" href="http://www.google.com/">http://www.google.com</a><!-- m -->
  5. bli bli bli bli
  6. <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
  7. blo blo blo


 
résultat souhaité  :
 

Code :
  1. bla bla bla bla
  2. blu blu blu blu
  3. bli bli bli bli
  4. blo blo blo


 
 
merci !


Message édité par mims1664 le 21-01-2008 à 19:43:19

---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 21-01-2008 à 19:42:03   

Reply

Marsh Posté le 21-01-2008 à 23:22:48    

Hello,
si une ligne sur 2 est "pareille", il suffit de n'en lire qu'une sur 2 ...
Concrètement récupérer dans un tableau le code du premier bloc :

Code :
  1. $array = explode("\n",$code1); // je suppose que code1 est le premier code mis
  2. foreach($array as $line)
  3. {
  4.     if (!eregi("<!(.+)",$line))
  5.     {
  6.         echo $line;
  7.     }
  8. }


Je ne suis peut-être pas encore bien en forme à cette heure, mais le principe est simple : on "éclate" ligne par ligne ce code et pour chaque ligne, si ça ne ressemble pas à <!{quelque chose} alors on l'affiche.
 
ça permet d'avoir un tableau dont on récupère une ligne sur 2, 3 ... X mais pas de manière systématique : on analyse ligne par ligne.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 22-01-2008 à 08:55:03    

Heu mon exemple est sans doute mauvais, ce n'est pas une ligne sur 2, ces insertions (car il s'agit d'insertion d'image, smileys, lien , ... ) peuvent apparraitre n'importe ou ...  
 

Code :
  1. bla bla bla bla <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> blu blu blu blu


 
par exemple.

Reply

Marsh Posté le 22-01-2008 à 09:06:12    

Parsing via DOM, puis extraction juste du texte? (par contre je saurais pas te dire quelle méthode c'est, faut demander à florentg)

Message cité 1 fois
Message édité par masklinn le 22-01-2008 à 09:06:32

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

Marsh Posté le 22-01-2008 à 09:12:26    

Code :
  1. preg_replace('/<.*?>/', '',  $tachaine);

Message cité 1 fois
Message édité par anapajari le 22-01-2008 à 09:12:38
Reply

Marsh Posté le 22-01-2008 à 09:18:57    

masklinn a écrit :

Parsing via DOM, puis extraction juste du texte? (par contre je saurais pas te dire quelle méthode c'est, faut demander à florentg)


Avec la propriété textContent d'un DOMNode

Reply

Marsh Posté le 22-01-2008 à 09:35:52    

anapajari a écrit :

Code :
  1. preg_replace('/<.*?>/', '',  $tachaine);



Ca suffit avec vos regexp pourries alors qu'il existe des outils qui font ça très bien, bon sang [:mlc]

FlorentG a écrit :


Avec la propriété textContent d'un DOMNode


Walla, merci :jap:

Message cité 1 fois
Message édité par masklinn le 22-01-2008 à 09:36:05

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

Marsh Posté le 22-01-2008 à 10:29:16    

masklinn a écrit :


Ca suffit avec vos regexp pourries alors qu'il existe des outils qui font ça très bien, bon sang [:mlc]


Je vois pas l'interêt de parser le truc puis extraire le contenu alors qu'il tient juste à virer toutes les balises  
D'autant que je reste plus que scéptique sur la validité du "xml" contenu dans une base PhpBB et que s'il a un morceau de balise qui traine tout son truc va planter. [:spamafote]
Mais c'est sur qu'on gagne en nerditude à utiliser le DOM.
 
Et ma regex pourrie tu sais ce que tu peux en faire [:dawak]
 

Reply

Marsh Posté le 22-01-2008 à 10:30:44    

anapajari a écrit :

Et ma regex pourrie tu sais ce que tu peux en faire [:dawak]


Ouais, j'peux te la coller dans le fondement [:dawak]


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

Marsh Posté le 22-01-2008 à 11:42:48    

masklinn a écrit :


Ouais, j'peux te la coller dans le fondement [:dawak]


 :non:  
 
Parse error: syntax error, unexpected T_ASS in index.php on line 2
 
:o

Reply

Marsh Posté le 22-01-2008 à 11:42:48   

Reply

Marsh Posté le 22-01-2008 à 16:46:33    

Une regexp pour virer des tags? :o Du dom pour enlever les balises? :o
Et pourquoi pas un chargement dans un navigateur suivit d'un copier collé du texte affiché tant que vous y êtes?
 
Si c'était du C#, je me dirais : ils ont pas du faire une fonction exprès pour ça, mais c'est du php, alors vive les 30 000 (nombre exagéré. :p ) fonctions dispos de base : http://fr3.php.net/manual/fr/function.strip-tags.php

Reply

Marsh Posté le 22-01-2008 à 20:28:31    

le problème est que se ne sont pas des codes HTML !! c'est des balises spécifiques a phpbb3 !!
 
en ce qui concerne preg_replace ca ne fonctionne pas ....


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 22-01-2008 à 20:38:12    

mims1664 a écrit :

le problème est que se ne sont pas des codes HTML !! c'est des balises spécifiques a phpbb3 !!

 

en ce qui concerne preg_replace ca ne fonctionne pas ....


Heuuu

<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

c'est du HTML à l'ancienne hein [:pingouino]

 

Les trucs horribles là au milieu sont ptet utilisés par PHPBB, mais apparement ils ont été suffisament intelligents pour encoder leurs infos dans du HTML standard [:spamafote]


Message édité par masklinn le 22-01-2008 à 20:38:59

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

Marsh Posté le 22-01-2008 à 21:15:52    

ouais c'est vrai que ca ressemble bien a de l'html mais cette fonction ne fonctionne pas ....


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 23-01-2008 à 10:06:19    

mims1664 a écrit :

preg_replace ca ne fonctionne pas ....


mims1664 a écrit :

cette fonction ne fonctionne pas ....


problème d'ICC...
(j'ai testé les 3 méthodes qui t'ont été proposées, les 3 "fonctionnent" )
 

Reply

Marsh Posté le 23-01-2008 à 10:41:30    

C'est quoi la signification d' "ICC"?
En cherchant sur google, je tombe sur les gestion de couleur, les "Rencontres Innovation Compétitivité et Connaissance", les "indice du coût de la construction" et autres "Impact Centre Chrétien" (vraiment aucun rapport avec l'informatique) .
Le plus proche au niveau signification que j'ai trouvé à l'air d'être : "ICC : Intermédiaire des Chercheurs & Curieux".

Reply

Marsh Posté le 23-01-2008 à 10:53:42    

Interface Chaise Clavier

Reply

Marsh Posté le 23-01-2008 à 11:07:03    

J'aurais du y penser. :whistle:

Reply

Marsh Posté le 23-01-2008 à 11:15:16    

LOL c'est sympa ca !!!
je vais persévérer ! mais la je ne peux pas de suite, je vous tiens au courant !


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 24-01-2008 à 10:27:15    

c'est bon j'avais zappé le stripslashes !!! merchi tout plein !


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Sujets relatifs:

Leave a Replay

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