php чередование с исключениями или реорганизация htmlspecialchar - PullRequest
0 голосов
/ 17 апреля 2011

Я пытаюсь создать веб-сайт для обмена примерами кодов и комментариев. Моя проблема состоит в том, чтобы избегать любых тегов / сценариев, кроме img и некоторых очень распространенных, таких как i b ... Я пробовал разные решения, но в один момент все они складываются: если пользователь использует <не для тегов, то есть меньше, чем ... </p>

Сначала я начал код с разделения тегов , split_tag других мест и htmlspecialchars в части кода, а затем их повторного объединения. Но, тем не менее, если пользователь использует <где-нибудь в текстовой части, он стирает сообщение, пока не увидит>. (Также пытался избежать стрип-тегов для удаления, помещая пробел после <, но не мог найти способ узнать, является ли он тегом или меньше) </p>

Тогда я попробовал это назад. Использовал htmlspecialchars для всех постов и изменил их обратно на внешний вид тегов. На этот раз у меня возникли проблемы со всеми функциями замены, потому что некоторые из них не работали правильно или перекрывались друг с другом. Я чувствую, что есть простое решение, но я не мог смотреть под прямым углом. Какие-либо предложения ?

$yazi = htmlspecialchars($_POST["yazi"]);<br> $yazi = str_replace('&lt;a href=&quot;', '<a href"', $yazi);<br> $yazi = str_replace('&lt;&#47a&gt;', '</a>', $yazi);<br> $yazi = str_replace('&lt;code&gt;','<code>', $yazi);<br> $yazi = str_replace('&lt;&#47codea&gt;', ' ', $ yazi);
$ yazi = str_replace ('& lt; br & gt;', '
', $ yazi);
$ yazi = str_replace ('& lt; i & gt;', '', $ yazi);
$ yazi = str_replace ('& lt; & # 47i & gt;', '
', $ yazi);
$ yazi = str_replace ('& lt; b & gt;', '', $ yazi);
$ yazi = str_replace ('& lt; & # 47b & gt;', '
', $ yazi);
$ yazi = str_replace ('& lt; p & gt;', '

', $ yazi);
$ yazi = str_replace ('& lt; & # 47p & gt;', '

', $ yazi);
$ yazi = str_replace ('& lt; img src = & quot;', 'image $yazi = str_replace('"/>', '"/>', $yazi);
$yazi = str_replace('" />', '" />', $yazi);
$yazi = str_replace('">', '">', $ yazi);
$ yazi = str_replace ('& quot; & gt;', '">', $ yazi);

1 Ответ

0 голосов
/ 17 апреля 2011

Звучит так, будто вы хотите дезинфицирующее средство для HTML.

http://htmlpurifier.org/ выглядит довольно хорошо.

...