RRR, я бы тебе порекомендовал проверять не только текстарии, но и любые данные.
причем проверка зависит от того, как ты хранишь.
Для базы данных надо экранировать спецсимволы, а для текстовых файлов - наоборот. Для файла надо заменять переводы строк на БР, а для базы - нет.
Вот тебе пример для хранения в текстовом файле построчно.
Сразу, в одном цикле, перебираются все пришедшие переменные - очень удобно.
PHP:
foreach($_POST as $key => $value) {
$value=trim($value);
if (get_magic_quotes_gpc()) $value = stripslashes($value);
$value=htmlspecialchars($value,ENT_QUOTES);
$_POST[$key]=$value;
$value=str_replace("\r","",$value);
$value=str_replace("\n","<br>",$value);
$$key=$value;
}
Замечания к твоему коду
- не нужно использовать регулярные выражения (preg_replace) там, где можно без них обойтись.
- если ты используешь htmlspecialchars, то можно обойтись без strip_tags
- htmlspecialchars надо использовать с параметром ENT_QUOTES
почему в поем примере значение сначала присваивается элементу $_POST, а потом самой переменной - для того, чтобы можно было при ошибке вывести в форму ровно то, что человек вводил.