Как разрешить код в htmlpurifier

Я нахожусь в середине создания окна комментариев, где люди могут задавать свои вопросы.

Я получаю много людей, спрашивающих, как они делают что-то, что подразумевает ввод кода в форму.

Форма проходит через htmlpurifier, чтобы убедиться, что он безопасен в использовании.

Но когда кто-то вводит эхо-коды и т. Д., Это не позволяет. Или, если кто-то вводит div, он также не позволяет этого, даже если он упакован в <code>.

Например, это:

<code><div class="classname"></div></code> 

просто добавит div.

а также

 <code><?php echo $word; ?></code> 

Не показывать код вообще.

Как я установил это htmlpurifier:

 $content = $_POST['comment']; $rawf = str_replace('<code>', '<pre><code>', $content); $rawfp = str_replace('</code>', '</code></pre>', $rawf); require_once '../Libs/htmlPurifier/library/HTMLPurifier.auto.php'; $purifierconfig = HTMLPurifier_Config::createDefault(); $purifierconfig->set('HTML.Allowed', 'b,a[href],i,em,br,code,pre'); $purifier = new HTMLPurifier($purifierconfig); $clean_html = $purifier->purify($rawfp); $ticketpost = str_replace('<a ', '<a rel="nofollow" ', $clean_html); 

Затем $ ticketpost вставляется в базу данных с помощью подготовленных инструкций PDO.

Есть ли что-то, чего я не делаю, или что-то не так?

Если так, пожалуйста, не могли бы вы помочь.

благодаря

Solutions Collecting From Web of "Как разрешить код в htmlpurifier"

Ваша проблема заключается в том, что если вход по-настоящему HTML, то для вывода в результате любых фрагментов кода необходимо экранировать. У нас есть специальный синтаксис <![CDATA[ put code here ]]> для этого, но иногда вы не хотите беспокоить пользователей таким синтаксисом. В этом случае вы можете сделать preg_replace_callback на тегах кода, где обратный вызов пропускает код между двумя тегами кода. Но обратите внимание, теперь нет способа выразить фрагмент кода, содержащий теги кода! Так что это все компромиссы.