<?php// chaine à traiter, et recouper semblable au contenu de la bdd de phpBB$chaine = "TEST <> "' éèàùò TEST";// cette chaine affiche en HTML : TEST <> "' éèàùò TEST// on traduit le HTML$chaine = un_htmlentities($chaine);// chaine contient donc litteralement : TEST <> "' éèàùò TEST// on peut donc la recouper sans risquer de couper un code HTML// la recoupe s'effectue si le texte fait plus de 150 caractèresif(strlen($chaine)>=150){ $chaine = substr($chaine,0,150); // recoupe du texte // les 2 lignes suivantes servent à éliminer le mot qui a été tronqué lors de la précédente recoupe $espace = strrpos($chaine,' '); // on cherche la position du dernier espace $texte = substr($chaine,0,$espace).' ...'; // on garde seulement ce qui est avant cet espace et on ajoute des points de suspensions}// fin de la recoupe// reconversion en HTML (pour la sécurité)$chaine = htmlentities($chaine, ENT_QUOTES);// l'attribut ENT_QUOTES est là pour signifier que les apostrophes doivent également être traduitesecho $chaine;//////////////////////////////////////////////////////////////////////////////////////////////////////// declaration de la fonction un_htmlentities()/////////////////////////////////////////////////////////////////////////////////function un_htmlentities($string){ $trans_tbl = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES); // on récupère un tableau contenant les correspondances caractères => HTML //correction de bug : le caractère ' doit être encoder en ' et non en ' !! $trans_tbl["'"] = '''; // pour voir le contenu du tableau, décommenter la ligne suivante : // print_r($trans_tbl); $trans_tbl = array_flip($trans_tbl); // on inverse le tableau : les valeurs deviennent des clés et inversement return strtr($string, $trans_tbl); // chaque code HTML est remplacé par son équivalent}?>