Я раньше не использовал htmlentities, но кажется, что это более надежная версия urlencode (которую я часто использую). Возможно, вы захотите попробовать:
htmlentities(strip_tags($str,ENT_COMPAT),'UTF-8',false);
Точно так же, как маленький самородок, если вы хотите сохранить <br>
в качестве стандартного возврата каретки, вы можете сделать это:
htmlentities(strip_tags(str_replace("<br>","\n",$str,ENT_COMPAT)),'UTF-8',false);
Я знаю, что мне иногда нравится это делать.
Удачи.