Запретить рендеринг/выполнение php между предварительными тегами


Я использую теги pre для отображения фрагментов кода на своем веб-сайте, эти фрагменты содержат html и php.

До сих пор я использовал Jquery для преобразования html в наборах кодов в обычный текст, но теги php все еще выполняются.

Код, который я использовал для преобразования html-содержимого тега pre в обычный текст:

$(document).ready(function(){
    $("pre").text($("pre").html()); 
});

Пример того, для чего я его использую:

<pre>
    <p>paragraph Content</p>
    <h1>html code</h1>
    <?php echo "this is php example code"; ?>
</pre>

Первые 2 строки отображаются в браузере с тегами и все отлично, но в третьей строке выполните рендеринг только тегов php в этом примере кода php. Кто-нибудь может мне помочь, чтобы я мог отобразить теги php в своем фрагменте кода?

Также, если кто-нибудь знает лучшее решение для визуализации html/css и php в виде фрагмента кода на вашем веб-сайте, это было бы действительно полезно.

Author: Stephan de Vries, 2013-03-14

4 answers

Проблема вашего подхода заключается в том, что вы пытаетесь повлиять на рендеринг после того, как браузер обработал файл. Когда вы посмотрите на исходный код своей страницы, вы заметите, что на самом деле там нет ничего, кроме "этого примера кода php", потому что сервер проанализировал эту часть вашего кода и выполнил ее, что не приводит ни к чему, кроме строки, которую вы ввели в команду echo.

Вам нужно обработать свой вывод, прежде чем отправлять его клиенту и получать все вхождения <pre> и </pre> для замены всех < и > между ними соответствующими объектами HTML.

Взгляните на этот вопрос , чтобы найти наилучший подход к анализу HTML и получить соответствующие элементы для их изменения.

 2
Author: Till Helge, 2017-05-23 12:02:19

Вам следует избегать символов < и > - замените их на их HTML-объекты, &lt; и &gt; соответственно;)

Если вы хотите полное и всестороннее преобразование в HTML-объекты, попробуйте преобразовать их по адресу http://centricle.com/tools/html-entities

Как правило, рекомендуется конвертировать все символы в соответствующие HTML-объекты внутри блока кода.

 2
Author: Terry, 2013-03-14 09:37:58

Попробуйте заменить <?php ... ?> на

&lt;? .... &gt;

 1
Author: Alexander Tretyak, 2013-03-14 09:38:01
<pre>
    &lt;p&gt;paragraph Content&lt;/p&gt;
    &lt;h1&gt;html code&lt;/h1&gt;
    &lt;?php echo "this is php example code"; ?&gt;
</pre>

Вот пример jsfiddle, чтобы вы могли увидеть, как он отображается на странице.

 1
Author: James Donnelly, 2013-03-14 09:38:50