PHP: недопустимые символы разрыва HTML - PullRequest
0 голосов
/ 10 марта 2009

как мне очистить строку, содержащую недопустимые символы и нарушившую html после печати в textarea?

PHP's ord() возвращает 0 для указанного символа, но я подозреваю, что это не нуль, но я не думаю, что это все равно имеет значение.

Когда строка отображается в текстовой области, весь текст после недопустимого символа исчезнет, ​​а также все элементы HTML после текстовой области.

Я пробовал с htmlentities, htmlspecialchars, mb_convert_encoding, iconv('UTF-8', 'UTF-8//IGNORE', $str), но ни один из них не работал.

filter_var() еще не представлен в 5.1.2, который мы используем.

echo и var_dump печатают символ как 101

Ответы [ 3 ]

2 голосов
/ 10 марта 2009

Попробуйте filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW).

Редактировать: Поскольку 5.1.2 не имеет filter_var, вы можете попробовать это (что почти то же самое):

preg_replace('/\p{Cc}/u', '', $string);
1 голос
/ 10 марта 2009

Я использовал это регулярное выражение раньше, когда htmlentities, htmlspecialchars, mb_convert_encoding, iconv ('UTF-8', 'UTF-8 // IGNORE', $ str) не работали. Удаляет управляющие символы

$str = preg_replace( '/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F]/', '', $str );
0 голосов
/ 31 марта 2009

Возможно:

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

??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...