Я пытаюсь создать веб-сайт для обмена примерами кодов и комментариев. Моя проблема состоит в том, чтобы избегать любых тегов / сценариев, кроме img и некоторых очень распространенных, таких как i b ... Я пробовал разные решения, но в один момент все они складываются: если пользователь использует <не для тегов, то есть меньше, чем ... </p>
Сначала я начал код с разделения тегов
, split_tag других мест и htmlspecialchars в части кода, а затем их повторного объединения. Но, тем не менее, если пользователь использует <где-нибудь в текстовой части, он стирает сообщение, пока не увидит>. (Также пытался избежать стрип-тегов для удаления, помещая пробел после <, но не мог найти способ узнать, является ли он тегом или меньше) </p>
Тогда я попробовал это назад. Использовал htmlspecialchars для всех постов и изменил их обратно на внешний вид тегов. На этот раз у меня возникли проблемы со всеми функциями замены, потому что некоторые из них не работали правильно или перекрывались друг с другом. Я чувствую, что есть простое решение, но я не мог смотреть под прямым углом. Какие-либо предложения ?
$yazi = htmlspecialchars($_POST["yazi"]);<br>
$yazi = str_replace('<a href="', '<a href"', $yazi);<br>
$yazi = str_replace('</a>', '</a>', $yazi);<br>
$yazi = str_replace('<code>','<code>', $yazi);<br>
$yazi = str_replace('</codea>', '
', $ 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;', '
$yazi = str_replace('"/>', '"/>', $yazi);
$yazi = str_replace('" />', '" />', $yazi);
$yazi = str_replace('">', '">', $ yazi);
$ yazi = str_replace ('& quot; & gt;', '">', $ yazi);