Lentreprenaute Posté 18 Février 2004 Posté 18 Février 2004 comment ecrire cela pour remplacer toutes les répétitons ! dans mon exemple j'en remplace 3 par 1 mais est ce qu'il est possible d'ecrire remplacer tous les tags qui se répete par un seul! car sinon ca devient ingérable. moi et les expressions ca fait deux, un grand merci a celui qui me donne la soluce $letexte = ereg_replace("<ol><ol><ol>","<ol>",$letexte);// _ol Florent qui squatte le hub en ce moment
Guest Hellway Posté 18 Février 2004 Posté 18 Février 2004 Essaies ça : $Chaine=preg_replace('/<([ol<> ])>/i', '<ol>', $Chaine); Je te granti pas que ça marche, mais le principe sur lequel je me base, c'est de remplacer une chaine qui commence par < et qui fini par > et qui ne peut contenir que les caractères o,l,<,> et peut-être un espace en plus... Le i ça veut dire que ça se répète autant de fois que possible. Par contre, pour les < et > il est peut-être obligé de mettre un caractère d'échappement \. Voilà
Lentreprenaute Posté 18 Février 2004 Auteur Posté 18 Février 2004 Merci Helli... pour ta réponse par contre, il ne se passe rien, hélas les doubons restent etc...
Dan Posté 18 Février 2004 Posté 18 Février 2004 $letexte = ereg_replace("(<ol>){1,9}","<ol>",$letexte); La syntaxe (<ol>){1,9} signifie "de 1 à 9 occurences de <ol>". Remplaces les nombres mini/maxi par les valeurs que tu souhaites. Dan
Lentreprenaute Posté 18 Février 2004 Auteur Posté 18 Février 2004 Dan , ca ne le fait toujours pas!? merci quand meme
Dan Posté 18 Février 2004 Posté 18 Février 2004 Dan , ca ne le fait toujours pas!? merci quand meme Une parenthèse mal placée... tu réessayes ? J'ai corrigé le code ...
Lentreprenaute Posté 18 Février 2004 Auteur Posté 18 Février 2004 Cette fois c'est la bonne, ca marche:) ca m'embete de rien comprendre à ces expressions ! un grand merci
Lentreprenaute Posté 19 Février 2004 Auteur Posté 19 Février 2004 Nouvelle problematique J'aimerai filtrer mon contenu pour remplacer tous les caractères spéciaux, comme ce "&" qui s'ecrit je ne sais plus avec quel code. etc... Connaissez vous un moyen de faire ca? je souhaite que mon contenu soit xhtml strict! Merci Florent
Guest Hellway Posté 19 Février 2004 Posté 19 Février 2004 (modifié) $Chaine=str_replace('&', '&', $Chaine); Sinon, pour la première question, je reste convaincu qu'il est préférable de ne pas avoir à spécifier un nombre déterminé de balises et plutôt de remplacer ces dernières quelque soit leur nombre. Bref, essaies ça : $Chaine=preg_replace('/<([ol<> ]+)>/i', '<ol>', $Chaine); Edité : Un doute dans la syntaxe... Modifié 19 Février 2004 par Hellway
Anonymus Posté 19 Février 2004 Posté 19 Février 2004 Bonjour, Pour les caractères spéciaux, deux solutions : On réinvente la roue function HTML_foo($txt){$array=("&","&", "\"",""", "<","<", ">",">", " "," ", "¡","¡", "¢","¢", "£","£", "€","¤", "¥","¥", "Š","¦", "§","§", "š","¨", "©","©", "ª","ª", "«","«", "¬","¬", "","", "®","®", "¯","&masr;", "°","°", "±","±", "²","²", "³","³", "Ž","´", "µ","µ", "¶","¶", "·","·", "ž","¸", "¹","&supl;", "º","º", "»","»", "Œ","¼", "œ","½", "Ÿ","¾", "¿","¿", "À","À", "Á","Á", "Â","Â", "Ã","Ã", "Ä","Ä", "Å","Å", "Æ","&Aelig;", "Ç","Ç", "È","È", "É","É", "Ê","&Ecric;", "Ë","Ë", "Ì","Ì", "Í","Í", "Î","Î", "Ï","Ï", "Ð","ð", "Ñ","Ñ", "Ò","Ò", "Ó","Ó", "Ô","Ô", "Õ","Õ", "Ö","Ö", "×","×", "Ø","Ø", "Ù","Ù", "Ú","Ú", "Û","Û", "Ü","Ü", "Ý","Ý", "Þ","þ", "ß","ß", "à","&agrace;", "á","á", "â","â", "ã","ã", "ä","ä", "å","å", "æ","æ", "ç","ç", "è","è", "é","é", "ê","ê", "ë","ë", "ì","ì", "í","í", "î","î", "ï","ï", "ð","ð", "ñ","ñ", "ò","ò", "ó","ó", "ô","ô", "õ","õ", "ö","ö", "÷","÷", "ø","ø", "ù","ù", "ú","ú", "û","û", "ü","ü", "ý","ý", "þ","þ", "ÿ","ÿ"); while (list($a,$ = each($array)){ $txt = str_replace($a,$b,$txt); } return $txt; } ou on se sert de la doc $txt = htmlentities($txt); Anonymus.
Lentreprenaute Posté 20 Février 2004 Auteur Posté 20 Février 2004 Super anonymous, figures toi que je me suis servi de la doc! et que j'ai utilisé le code ci-dessous, je testais en insérant des caracteres spéciaux "" & "" et avec html entities rien a faire il me retournait pas le bon code, je crois avoir remarqué le meme pb avec certains caracteres que j'ai mis en plus dans le filtre car ca me faisait fumer le cerveau à la longue. J'ai donc fait un hybride des deux, pour certains caracteres! merci en tout cas, ta liste des caracteres, je la mets de coté $letexte = htmlentities( $letexte, ENT_NOQUOTES); $transform = array (" "=> " ","<"=> "<",">"=> ">","&#"=> "", ""=> "™", ""=> "€", ""=> "Œ", ""=> "œ", ""=> "ƒ", ""=> "", ""=> "", ""=> "Ÿ", ""=> "", "~"=> "~", "$"=> "$", ); $letexte = strtr( $letexte, $transform ); unset($transform); return $letexte;
Anonymus Posté 20 Février 2004 Posté 20 Février 2004 As tu essayé ceci : <?php$trans = get_html_translation_table(HTML_ENTITIES); $str = "Hallo & <Frau> & Krämer"; $encoded = strtr($str, $trans); ?> Anonymus.
Lentreprenaute Posté 20 Février 2004 Auteur Posté 20 Février 2004 RE, Oui j'avais essayé Anonymous, mais je vais refaire un test , de ton dernier code, car j'avais l'esprit un peu saturé hier. C'est que je suis pas développeur à la base! J'aurai une dernière requete à vous soumettre, comment faire pour supprimer tous ces bous de code XXX etant des valeurs qui peuvent , vous l'avez deviné "etre differentes". <div class='cadre_XXX'><a href='XXXX'><img src='XXXX' height="XXX" width="XXX" alt=""/></a></div> Je peux avoir d'autres div à ne pas supprimer, merci de votre aide, les hubiens. Merci Florent Ps: j'espere ne pas abuser !
Anonymus Posté 20 Février 2004 Posté 20 Février 2004 1/ Tu n'abuses pas 2/ peux tu réexpliquer ? Dans ce code, que veux tu enlever exactement ? <div class='cadre_XXX'><a href='XXXX'><img src='XXXX' height="XXX" width="XXX" alt=""/></a></div> Les xxx peuvent etre différents, mais alors comment en reconnaitre un ? comment savoir celui que tu veux enlever de celui que tu ne veux pas enlever ?
Lentreprenaute Posté 20 Février 2004 Auteur Posté 20 Février 2004 (modifié) Anonymous, 1/merci 2/ je veux enlever toutes les lignes comme celle ci-dessous! sachant que j'aurai des valeurs XXX qui peuvent changer. et d'autres div mais avec des class differenst à ne pas supprimer ! donc tout ce qui sera formatter ainsi, je souhaite le supprimer! <div class='cadre_XXX'><a href='XXXX'><img src='XXXX' height="XXX" width="XXX" alt=""/></a></div> ce qui reveint surement a chercher identifier le div class & sa fermeture et le supprimer avec tout le bloc entre les deux? c'est possible? <div class='cadre_ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<div> Florent Modifié 20 Février 2004 par Lentreprenaute
Anonymus Posté 21 Février 2004 Posté 21 Février 2004 Ceci devrait marcher : $text = eregi_replace("<div class='cadre_[^<>]*>.*</div>"," ",$text); Anonymus.
Lentreprenaute Posté 21 Février 2004 Auteur Posté 21 Février 2004 du premier coup! Merci beaucoup Florent
Anonymus Posté 21 Février 2004 Posté 21 Février 2004 Fais bien attention que tous tes <div soient fermés par les bons </div. Exemple : <div1 texte <div2 suite </div il manque un div, donc tout risque d'etre effacé. Voilà, au plaisir Anonymus
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant