Originariamente inviato da elysaweb
Allora, ho un problema con substr e strip_tags, quando questi si trovano assieme.
Io salvo dei testi nel database mysql, in questo modo (il testo contiene dei tag html, in quanto viene creato con un editor):
$testo=addslashes(stripslashes(trim($_POST['testo'])));
$insert=mysql_query("insert into tabella values (NULL, $testo')",$db);
E poi devo recuperare solo una porzione di testo, da mostrare in una specie di vetrina, e lo faccio così:
echo substr(strip_tags(trim($c['testo'])),0,255);
Che mi recupera 255 caratteri epurati da tutti i tag html. Però, c'è un però, se si trova di fronte ad un'entità html, tipo & n b s p ; (ho messo gli spazi perchè si veda), se capita proprio al 251° carattere, per esempio, me la tronca, e quindi il browser non la interpreta più come un'entità, ma come semplici caratteri, e mi va a stampare "domani grande festa a roma e &nb".
Come posso evitarlo?
Se metto html_entity_decode, viene na schifezza, tutti i caratteri speciali non vengono interpretati, se metto htmlentities mi mostra tutti i tag senza interpretarli. Sinceramente non so come fare!