Autor Zpráva
gaminn
Profil *
Zdravím,
ve výpise článků chci mít několik prvních vět z jeho úvodu, je ale možné, že v těch několika větách dojde k otevření HTML tagů. Takže neznáze nějakou funkci, která by je všechny zavřela?
Mireczech
Profil
Obavam se ze ze standardnich fci to zadna neumi.
gaminn
Profil *
OK, tak jakákoliv jiná ověřená... zkoušel jsem googlovat ale nic se mi nepodařilo objevit.
djlj
Profil
Tenhle problém jsem řešil taky a nakonec u náhledů článků používám strip_tags.
gaminn
Profil *
Taky jsem nad tím uvažoval... ale u mě je možnost, že se třeba z počátku článku objeví nějaká tabulka, tak tam by bylo divné odstranit tagy.... Raději bych to uzavírání. Ale moc se mi s tou funkcí nechce dělat, tak sháním po netu....
Kalda
Profil *
Zkusil bych vlastnosti tidy. To vytváří validní (X)HTML, tj. mělo by i uzavřít tagy. Ale přímo jen k samotnému uzavírání tagů jsem to nikdy nepoužíval...
Jinak pro uzavírání tagů se dá použít i safehtml, ale opět to je spíš jen jako "vedlejší efekt"
gaminn
Profil *
Tak google přece jen pomohlo:


function closeTags($text){
#put all opened tags into an array
preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU", $text, $result);
$openedTags = $result[1];

#put all closed tags into an array
preg_match_all("#</([a-z]+)>#iU", $text, $result);
$closedTags = $result[1];
$lenOpened = count($openedTags);

# all tags are closed
if(count($closedTags) == $lenOpened){
return $text;
}

$openedTags = array_reverse($openedTags);

# close tags
for($i = 0 ; $i < $lenOpened ; $i++) {
if (!in_array($openedTags[$i], $closedTags)){
$text .= '</'.$openedTags[$i].'>';
}
else {
unset($closedTags[array_search($openedTags[$i], $closedTags)]);
}
}

return $text;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0