Подсвечиваем PHP и JavaScript код с помощью PHP

30-04-2010

PHP имеет такую интересную функцию как автоматическая подсветка PHP кода которая называется highlight_string(). Его можно использовать для подсветки кода на вашем сайте без использования javascrpt’a, но не очень удобен так как подсвечивает только php код также его применить для подсветки javascript кода так как php и javascript сильно похожи в синтаксисе это можно сделать подключив следующий файл. В котором только одна функция format_javascript(). Рассмотрим обе функции:

highlight_string()

Текст содержащий функция должен начинаться с <?php и заканчиваться ?> вот примитивное его использование:

<?php highlight_string('<?php
  $i = 1; 

  function rockOut() {
      alert("lalalala");
  }
?>'); ?>

В итоге html код этого отрезка будет выглядеть так:

<pre id="code_highlighted"><code><span style="color: #0000BB">
<span style="color: #0000BB"><script type="text/javascript">
        </span><span style="color: #007700">if (</span><span style="color: #0000BB">true</span><span style="color: #007700">) {
	   echo </span><span style="color: #DD0000">'The value is true'</span><span style="color: #007700">;
	} else {
	   echo </span><span style="color: #DD0000">'The value is false'</span><span style="color: #007700">;
	}

</span><span style="color: #0000BB"></script></span>
</span>
</pre>

Который выглядит так:

highlightPHP

Единственное что хотел бы отметить что возникают проблемы с кавычками, допустим если вы взяли подсвечиваемый код в одинарные кавычки то он не должен содержать таких же кавычек в противном случае будет выдавать ошибку синтаксиса, ну и с двойными кавычками то же самое ))

format_javascript()

Со второй функцией почти та же хрень, ну а вот так выглядит подсветка javascript кода:


Но чем еще эта функция хороша… это тем что она может считывать и подсвечивать код их файла для этого поишем допустим так:

$testBigJS = file_get_contents('js/css-tricks.js');
echo format_javascript($testBigJS);

Если брать код из файла то разные кавычки не вызывают ошибок… Вроде все смотрим демо…

Динар3.9.2011 10:03
Рекомендую удрать htmlspecialchars() при обработке добавляемого текста. У тебя и сам движок обрабатывает. Иначе вот это <?php highlight_string('<?php очень сложно читать. Приходится заменять потом а Notepad.
ОСТАВИТЬ КОММЕНТАРИЙ