出力のカスタマイズ

デフォルトでは、Text_Highlighter は、入力内容の構文を強調した HTML を作成します。

作成される出力結果を変更し、 xterm のようなカラー対応端末や less(1) に適した形式とすることも可能です。 そのためには、Text_Highlighter に対して別のレンダラを使用するように指示します。

コンソールレンダラの使用法

<?php
require_once "Text/Highlighter.php";
require_once 
"Text/Highlighter/Renderer/Console.php";

$hlSQL =& Text_Highlighter::factory("SQL");
$hlSQL->setRenderer(new Text_Highlighter_Renderer_Console);
echo 
$hlSQL->highlight("SELECT * FROM some_table WHERE id = 12");
?>

HTML レンダラやコンソールレンダラの出力結果をさらにカスタマイズすることも可能です。 その場合は、コンストラクタにオプションの連想配列を渡します。

HTML レンダラのオプション

<?php
require_once "Text/Highlighter.php";
require_once 
"Text/Highlighter/Renderer/Html.php";

$renderer = new Text_Highlighter_Renderer_Html(array("numbers" => HL_NUMBERS_LI"tabsize" => 4));

$hlJava =& Text_Highlighter::factory("JAVA");
$hlJava->setRenderer($renderer);

echo 
$hlJava->highlight('class JavaProgram {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}'
);
?>

上の例は、HTML レンダラに対してふたつのオプションを指定しています。 まず <ol /> HTML タグを使用して行番号を表示させるようにし、 次に字下げをスペース 4 文字に指定しています。

以下のオプションが使用可能です。

レンダラクラスで使用可能なオプション
名前 説明 HTML レンダラで使用可能? コンソールレンダラで使用可能? ヒント
numbers 行番号の形式 yes yes コンソールレンダラの場合、このオプションは単に TRUE あるいは FALSE を指定します。これらはそれぞれ 出力する/出力しない という意味です。HTML レンダラでは、 次の三種類のうちのいずれかを指定します。 HL_NUMBERS_LI は、HTML の <ol /> タグを使用して行番号を出力します。 HL_NUMBERS_TABLE は、 カラム数が 2 のテーブルを作成します。そして最初のカラムに行番号、 次のカラムにソースコードを出力します。 FALSE を指定すると、HTML レンダラで行番号を出力しなくなります。
tabsize タブの幅 yes yes  
colors 追加の色 no yes 連想配列形式で、 カラー対応のコンソールにおける追加の色を指定します。 連想配列のキーが色の名前となり、対応するエスケープシーケンス (例えば \033[1;31mRed) を連想配列の値として指定します。
使用法 (Previous) Text_LanguageDetect (Next)
Last updated: Mon, 28 Jul 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: Axeia
Note that this package uses css classesB for syntax highlighting but does not by default do anything to include a stylesheet with these classes defined.

This means that if you use the default options it will give back normal looking plain text, if you're using the line-numbering option it wont even be indented (uses a <ol> instead of <pre> to PREserve whitespace)

So in the HTML you're outputting it to you may want to include the sample.css stylesheet that's in the package.

e.g. in the <head> section of your file use
<link rel="stylesheet" type="text/css" href="sample.css" />
(if the sample.css file has been placed in the same directory as the file outputting the text - but that's basic HTML knowledge which I assume everyone interested in this is familiar with).

Going by the bugtracker a future release should allow different highlighting on a per language base by assigning the container element a class based on the used language.
e.g.
.hl-java .hl-string{ color: purple; /*Only java gets purple colored strings.*/ }