2015-04-14 6 views
3

Я печатаю журнал чата с php. Поскольку это чат-журнал, он может иметь пользовательский ввод.Удалить открытый HTML-комментарий с помощью PHP

Я хочу, чтобы любой <!--, введенный пользователем, оставил комментарий в остальной части моего файла, но по какой-то причине мой код не работает.

Если в txt-файле есть открытый тег <!--, он прокомментирует остальную часть кода. Если в файле есть <!-- Text -->, то «Текст» не отражается.

Я в недоумении, как и стрип-теги должны это исправить ....

Я заподозрить у меня есть ошибка в моем коде, позволяющее это.

while(!feof($lfile)) { 
$line = fgetss($lfile); 
$lineclean = strip_tags($line); 
    echo $lineclean . "<br>"; 
} 

Прошу прощения за грязный код, я расширил его для устранения неполадок.

+1

Strip_tags работает для меня. 'this is text
' from '$ lineclean = strip_tags ('this is text ');' Можете ли вы опубликовать образец на входе? – chris85

+0

Я думаю, что проблема заключается в том, откуда поступает вход, но я не уверен. Если вы заметили, функция полосы использует прямой вход от fgets. Я изменил fgetss на fget, и он больше не может комментировать весь файл с открытым тегом комментариев html, но он все еще комментирует остальную часть строки. – Ignition

+0

Если вы хотите содержать комментарий без самих тегов комментариев, я не думаю, что strip_tags будет работать для вас - «* Примечание: HTML-комментарии и теги PHP также лишены. Это жестко запрограммировано и не может быть изменено с allowable_tags. * "- [из руководства] (http://php.net/manual/en/function.strip-tags.php) –

ответ

0

Вы можете пройти все через htmlentities($line, ENT_QUOTES), и все будет отображаться в точности так, как оно будет прочитано. Это также предотвратит атаки XSS и другие строки со злым умыслом.

Смежные вопросы