evg
Недавно наткнулся на такие грабельки.
При добавлении какого-либо html или php кода, содержащего спец.символы (типа &gt, &nbsp и т.д.) из PHP скрипта в <textarea>...</textarea> получаем замену этих спец. символов на символ которое обозначает этот символ (т.е. '&', ' ' и т.д.). И получил массу неприятных минут, когда только что работающая вещь вдруг перестаёт работать.
Вот пример формы:

$string = "&lt;?php $t = 5 + 1; echo '$t&nbsp;=&nbsp;'.$t; ?&gt;";
echo "
    <form method='post' >
	<textarea name='ta'>".$string."</textarea>
	<input type=submit value='submit form'>
    </form>
";
После отправки формы обратно, полученный текст в $string = &$_POST["ta"] превратится в
$string = "<?php $t = 5 + 1; echo '$t = '.$t; ?>";
Решение довольно простое использовать, перед отправкой данных в <textarea>, функцию htmlspecialchars().

echo "
<form method='post' >
	<textarea name='ta'>".htmlspecialchars( $string )."</textarea>
	<input type=submit value='submit form'>
</form>
"; 

Коментарии