-
Например, пишу:
<pre><code class="php"><?php
the_time('j F Y'); // выведет «20 октября 2006»
the_time('j F Y-—'); // выведет «20 Октябрь 2006»
?></code></pre>
Получаю:
<pre><code class="xml"><span class="pi"><?php
the_time('j F Y'); // выведет «20 октября 2006»
the_time('j F Y-—'); // выведет «20 Октябрь 2006»
?></span></code></pre>
Так и должно быть? Где копать? -
Есть подозрение, что в initHighlightingOnLoad переданы какие-то конкретные языки, и среди них нет 'php'. В этом случае хайлайтер про слово 'php' ничего не знает, и не воспринимает его, как указание языка.
-
Использую вот это:
hljs.initHighlightingOnLoad('php', 'xml', 'javascript', 'sql', 'ini', 'html', 'css', 'ssh');
PHP есть, как видно.
На той же странице, например, код:
function param($o) {
for($i=3;$i<=5;$i++)
if (isset($o[$i]))
$r[substr($o[$i],1,strpos($o[$i],'=')-1)]=substr($o[$i],strpos($o[$i],'=')+1);
return isset($r)?$r:false;
}
нормально определяется и подсвечивается как php, даже без явного указания языка.
в highlight.js изменил лишь строку:
var DEFAULT_LANGUAGES = ['ssh', 'python', 'ruby', 'perl', 'php', 'css', 'xml', 'html', 'django', 'javascript', 'java', 'cpp', 'sql', 'smalltalk', 'ini', 'diff'];
добавив "'ssh', ". -
Ой... Это я глупость говорю. Не заметил сразу, что у вас угловые скобки внутри
<pre><code>не экранированы, и HTML воспринимает все содержимое как неизвестный тег . Надо так:<pre><code class="php"><?php the_time('j F Y'); // выведет «20 октября 2006» the_time('j F Y-—'); // выведет «20 Октябрь 2006» ?></code></pre> -
Они экранированы, выше я код из firebug'a скопировал, он уже заменил < на < и т.д., в коде всё экранировано.
Без <?php ?> он вообще удаляет моё class="php", остаётся просто <pre><code>, с <?php ?>, как видно из кода выше, определяет код, как xml.
Проблема, остаётся, почему для highlight.js приоритетнее собственное мнение, моего явного указания языка? Так задумано? -
Нет, явное указание приоритетней. На самом деле, я вставлял вот ровно тот код, который выше написал, в тестовый файлик, и он подсвечивается как PHP. А можете где-нибудь страничку выложить с этим кодом, чтобы было вживую видно, что он не работает?
-
Да, положил сюда — http://maxq.ru/test/.
-
М-м.. Так вот там нет
class="php"ни в первом, ни втором фрагменте. -
(Что, впрочем, не отменяет того, что надо бы мне не путать
<?phpс xml-ными processing instructions) -
Ужас какой, догадался, моя ошибка, парсер вырезает class="php" :)
Спасибо Вам, Иван. Простите за отнятое время.
А фикс "<?php" жду в ближайших релизах :)
