8792 sujets

Développement web côté serveur, CMS

Bonjour à tous,

je viens de m'inscrire sur ce forum, même si je viens sur le site depuis quelques temps déjà, principalement pour trouver des (bonnes) solutions à mes problèmes de css. D'ailleurs merci pour votre excellent boulot !

J'ai un problème à vous exposer :

Dans le cadre de la validation d'un site en XHTML 1.0 strict, je me trouve confronté à un problème de balises HTML non fermées.
Je m'explique. Sur une page de nouvelles (news), seuls les x premiers caractères de chaque nouvelle sont affichés. Les textes (qui au départ sont valides) étant coupés avec une fonction PHP, on peut se retrouver avec une balise ouvrante dont la balise fermante a été coupée.

Prenons par exemple la nouvelle suivante :

<div>
<h3>Ma super nouvelle</h3>
<p>Le texte de ma nouvelle</p>
</div>


Disons que la fonction PHP ne garde que les 45 premiers caractères pour l'apercu de la nouvelle.

Ce qui nous donne :
<div>
<h3>Ma super nouvelle</h3>
<p>Le texte de 


Et là forcément, c'est plus valide.
Il faudrait détecter que la balise P n'a pas été fermée et la fermer, pareil pour la balise DIV.

Cela doit être faisable en utilisant les expressions régulières, mais je ne pense pas les maîtriser assez pour pouvoir faire un script d'autofermeture des balises. J'ai cherché si un script PHP de ce genre existait, mais je n'ai malheureusement rien trouvé.

Savez-vous où je pourrais trouver un tel script ?
Avez vous une autre solution à ce problème de validité ?

Merci par avance pour vos réponses.
Bonsoir,

Je ne suis pas convaincu que tu puisses trouver une solution miracle à ton problème.

Prendre un nombre de caractères fixes d'un document HTML signifie que l'on risque de se retrouver dans un état instable. Que faire par exemple si tu t'arrêtes sur <img src="h ?

Est-ce que la structure de la nouvelle est totalement imprévisible ? L'idéal serait de pouvoir prendre un nombre de caractères fixes sur le texte du premier paragraphe par exemple.
Salut.

On ne pourrait pas utiliser une regex ou quelque chose dans ce goût-là pour récupérer tout ce qui se trouve après le premier caractère ">" ?
Pourquoi garder les balises s'il s'agit d'un aperçu ?
Tous les aperçu de news que j'ai déjà vu supprimaient les balises pour ne pas avoir ce problème.
Merci à tous pour vos réponses. Smiley biggrin

Hubert Roksor > humm je n'ai rien trouvé de tel avec Tidy. Et puis je ne pense pas pouvoir l'installer, je ne peux pas toucher au serveur.

Eldebaran > oui quand ça coupe au milieu d'une balise, ça peut être embêtant. Pour le moment, je coupe au dernier espace précédant le nombre de caractères défini.

Prendre un nombre de caractères fixes sur le texte du premier paragraphe ? Disons que mon premier paragraphe peut se limiter à 3 mots, dans ce cas mon aperçu sera bien mince. Mais je ne suis même pas sur que ma nouvelle commence par une balise P. Dans ce cas, comme dit Sopo on peut récupérer tout ce qui se trouve après le premier caractère ">" mais si mon texte commence par <strong>bla bla</strong>, c'est rapé. Idem si j'ai un seul paragraphe qui fait 100 lignes de long.

QuentinC > oui. Pourquoi pas. J'aurais quand même aimé garder le contenu tel qu'il est (avec liens, mise en forme etc ...). Mais cette solution semble être un bon compromis pour rester dans la validité tout en affichant la quantité exacte de contenu que je souhaite.