2009-03-10 11 views
0

comment est-ce que je devrais nettoyer une chaîne qui contient des caractères non valides et casserait html après l'imprimant dans textarea?PHP: Caractères non valides html

Le ord() de PHP retourne 0 pour le dit caractère, mais je soupçonne que ce n'est pas nul, ce que je ne pense pas que ce soit important.

Lorsque la chaîne est affichée dans textarea, tout le texte après le caractère invalide disparaît ainsi que tous les éléments html après la zone de texte.

J'ai essayé avec htmlentities, htmlspecialchars, mb_convert_encoding, iconv('UTF-8', 'UTF-8//IGNORE', $str), mais aucun d'eux n'a fonctionné.

filter_var() n'est pas encore présenté en 5.1.2 que nous utilisons.

écho et var_dump imprimer le caractère

+0

Nous avons fini par utiliser la fonction d'expression régulière multi-octets qui a résolu le problème. – Mitja

Répondre

2

Essayez filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW).

Edit: Depuis 5.1.2 n'a pas filter_var, vous pouvez essayer ce (ce qui est à peu près la même chose):

preg_replace('/\p{Cc}/u', '', $string); 
+0

Merci, mais nous utilisons 5.1.2 qui ne dispose pas encore de filter_var(). – Mitja

+0

Je pense qu'ils ont une version PECL de l'extension de filtre pour 5.1, mais j'ai ajouté une autre réponse à la poste de toute façon ... – flussence

1

Je l'ai utilisé cette expression régulière avant quand htmlentities, htmlspecialchars, mb_convert_encoding, iconv ('UTF-8', 'UTF-8 // IGNORE', $ str) ne fonctionnait pas. Il supprime les caractères de contrôle

$str = preg_replace('/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F]/', '', $str); 
0

Eventuellement:

$str = trim($str, chr(0)); 

??

Questions connexes