J'ai plusieurs chaînes HTML pour couper à 100 personnages (de l'dépouillé de contenu, pas l'original) sans enlever les tags et sans rupture de HTML.
HTML d'origine de la chaîne (288 caractères):
$content = "<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the air
<span>everywhere</span>, it's a HTML taggy kind of day.</strong></div>";
Standard garniture: Garniture de 100 caractères HTML et les sauts de, dépouillé de contenu vient à ~40 caractères:
$content = substr($content, 0, 100)."..."; /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove... */
Dépouillé HTML: Sorties nombre de caractères permis, mais évidemment perd la mise en forme:
$content = substr(strip_tags($content)), 0, 100)."..."; /* output:
With a span over here and a nested div over there and a lot of other nested
texts and tags in the ai... */
Solution partielle: à l'aide de HTML Tidy ou purificateur de fermer les balises sorties HTML propre, mais de 100 caractères du langage HTML n'est pas contenu affiché.
$content = substr($content, 0, 100)."...";
$tidy = new tidy; $tidy->parseString($content); $tidy->cleanRepair(); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove</div></div>... */
Défi: Pour la sortie HTML propre et de n caractères (à l'exclusion des caractères d'éléments HTML):
$content = cutHTML($content, 100); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the
ai</strong></div>...";
Des Questions Similaires