Scinder un texte html sans casser les balises - PHP - Programmation
Marsh Posté le 06-07-2010 à 15:29:29
Tes 100 caractères sont comptés à partir de la source ou du rendu ?
Marsh Posté le 06-07-2010 à 16:01:02
avec strip_tags (si la mise en forme n'est pas importante pour les 100 caractères)
Marsh Posté le 06-07-2010 à 16:21:49
stealth35 a écrit : avec strip_tags (si la mise en forme n'est pas importante pour les 100 caractères) |
Il veut peut-être garder le code html...
Par contre, attention aux XSS... Assure-toi que le texte html est de source sûre...
Marsh Posté le 06-07-2010 à 16:23:05
Pascal le nain a écrit : |
d'ou la petite condition après
Marsh Posté le 06-07-2010 à 16:26:59
sebondus, t'as un autre problème, c'est qu'il peut y avoir dans ton texte d'autres balises HTML ouvertes qui peuvent être fermées bien après les 100 caractères
A mon avis, faut que tu parses la chaîne contenant les 100 1er caractères et que tu relèves toutes les balises ouvertes qui n'ont pas été fermée et tu les ajoutes à la fin de tes 100 caractères. Mais bonjour le risque que la mise en page devienne n'importe quoi... On peut connaître le besoin initial?
Marsh Posté le 06-07-2010 à 16:39:37
Il y a un truc absolument anormal... c'est que tu aies besoin de bosser sur du code HTML ...
Tout ce qui est traitement doit être fait en dehors du code.
Il sort d'où ton texte à scinder ? Pourquoi il y a déjà du code HTML avant même que tu ne traite la chaine ?
Marsh Posté le 06-07-2010 à 16:44:04
Je devine qu'il s'agit d'un extrait de 100 caractères d'un article par exemple...
Marsh Posté le 06-07-2010 à 16:46:44
y'a l'air d'avoir des soluces par ici : http://www.php.net/manual/fr/function.substr.php#92063
Marsh Posté le 06-07-2010 à 16:49:56
Pascal le nain a écrit : Je devine qu'il s'agit d'un extrait de 100 caractères d'un article par exemple... |
Peu importe qu'il s'agisse d'un article, d'une news, d'un message de forum ou quoi que ce soit d'autre ... le fait est que dans la majorité des cas ce n'est pas normal d'avoir à traiter du code HTML...
Marsh Posté le 06-07-2010 à 16:50:00
stealth35 a écrit : y'a l'air d'avoir des soluces par ici : http://www.php.net/manual/fr/function.substr.php#92063 |
Vu le nombre de boucles imbriquées et de regexps, je conseille l'utilisation d'un fichier de cache
Dj YeLL a écrit : |
Pafo.
Peut être qu'il récupère le code html d'un article sur un site web, et qu'il fait un extrait... Un peu comme facebook quand tu postes un lien...
Marsh Posté le 06-07-2010 à 17:02:52
Pascal le nain a écrit : |
ouai ca pas l'air génial
Marsh Posté le 07-07-2010 à 13:47:50
En fait c'est un backoffice ou on peut entre la description d'un element, on peut y inclure des balises <p>, <b>, <a>, <i>, etc ... bref pour metttre un peu en forme le texte.
Le probleme est que je n'ai pas de deuxieme champ contenant une description courte, d'ou mon besoin de scinder ce premier champ.
Marsh Posté le 07-07-2010 à 13:56:30
Alisteroid a écrit : En fait c'est un backoffice ou on peut entre la description d'un element, on peut y inclure des balises <p>, <b>, <a>, <i>, etc ... bref pour metttre un peu en forme le texte. |
est ce important de la garder la mise en forme pour le résumé ?
Marsh Posté le 07-07-2010 à 14:28:00
si c'est un lien hypertexte, ça serait dommage de perdre cette "mise en forme".
Sinon, l'autre solution, ça serait de modifier le backoffice pour rajouter un champ (si t'as accès au code source).
Marsh Posté le 07-07-2010 à 22:24:31
la solution est simple. il faut penser à utiliser le css au lieu de php pour ne pas avoir des balises ouvertes.
il suffit de mette le texte dans une div avec une langueur fixe et de lui attribuer la propriété overflow:hidden; pour que le texte qui dépasse la longueur n'apparait pas
<div style="height:200px;width:400px;overflow:hidden;">
ICI TEXTE
</div>
Marsh Posté le 08-07-2010 à 10:38:55
J'y ai même pas pensé , bref je crois que je vais rajouter un champ dans le backoffice
Marsh Posté le 08-07-2010 à 15:35:39
imed_bouzidi a écrit : la solution est simple. il faut penser à utiliser le css au lieu de php pour ne pas avoir des balises ouvertes. |
Marsh Posté le 13-07-2010 à 13:06:33
Je ne sais pas ce qui est bizarre dans la solution que j'ai proposé ! C'est simple, rapide et ça fonctionne
Marsh Posté le 13-07-2010 à 20:08:08
ouais mais ô combien crade !
tu ne résous pas le problème, tu le contournes ...
Marsh Posté le 06-07-2010 à 14:47:37
Bonjour,
J'ai besoin de scinder un long texte HTML et d'en récupérer les 100 premiers caractères(par exemple)
Le problème est que le 100 ème caractère peut être contenu dans une balise html ,
Genre "<b> coucou </b>"
Si le dernier u est le 100 ème caractères, mon texte scindé ne pourra plus être interprété et je verrai le <b> s'afficher au lieu d'être interprété.
Connaissez vous un moyen (un script) de scinder ce texte proprement ,
Merci