39

カスタマイズでき (つまり、新しい言語用に独自のトークナイザーを提供できます)、複数の言語を同時に(つまり、同じ出力ページで)処理できるPHP 構文強調表示エンジンを探しています。このエンジンは、 CSS クラスとうまく連携する必要があります。つまり、属性で装飾された要素を挿入して出力をフォーマットする必要があります。拡張可能なスキーマのボーナス ポイント。<span>class

クライアント側のシンタックス ハイライト スクリプト (JavaScript) は検索しません。

これまでのところ、私はGeSHiにこだわっています。残念ながら、GeSHi はいくつかの理由でひどく失敗します。主な理由は、異なる言語ファイルが完全に異なる、一貫性のないスタイルを定義していることです。さまざまな言語定義を共通の分母にリファクタリングしようと何時間も費やしましたが、ほとんどの定義ファイルはそれ自体が非常に悪いため、最終的に切り替えたいと思います。

理想的には、 CodeRayPygments、または JavaScript dp.SyntaxHighlighterに似た API が必要です。

説明:

PHP用ではなく、PHPで書かたコードハイライトソフトウェアを探しています(PHP内から使用する必要があるため)。

4

10 に答える 10

48

私のニーズを満たす既存のツールがなかったので、私は自分で作成しました。見よ、見よ:

ハイパーライト

使い方はとても簡単です:使うだけ

 <?php hyperlight($code, 'php'); ?>

コードを強調表示します。新しい言語定義の作成も比較的簡単です。正規表現と強力でシンプルなステートマシンを使用します。ちなみに、まだまだたくさんの定義が必要なので、気軽に投稿してください。

于 2009-05-04T12:36:16.727 に答える
10

[特にJavascriptを探していないので、この回答をCommunityWikiとしてマークしました]

http://softwaremaniacs.org/soft/highlight/は、PHP(およびサポートされている他の言語の次のリスト)構文強調表示ライブラリです。

Python、Ruby、Perl、PHP、XML、HTML、CSS、Django、Javascript、VBScript、Delphi、Java、C ++、C#、Lisp、RenderMan(RSLおよびRIB)、Maya Embedded Language、SQL、SmallTalk、Axapta、1C、Ini 、Diff、DOS .bat、Bash

< spanclass ="keyword">スタイルのマークアップを使用します。

また、 dojoツールキットに統合されています(dojoxプロジェクトとして:dojox.lang.highlight

Webサーバーを実行する最も一般的な方法ではありませんが、厳密に言えば、Javascriptはクライアント側に実装されるだけでなく、サーバー側のJavascriptエンジン/プラットフォームの組み合わせもあります

于 2008-10-23T16:25:13.527 に答える
3

Pear_TextHighlighter ( documentation )を見る価値があるかもしれません

デフォルトでは、HTML を希望どおりに出力することはできないと思いますが、カスタマイズのための広範な機能を提供します (つまり、さまざまなレンダラー/パーサーを作成できます)。

于 2008-10-24T12:31:05.267 に答える
2

まったく同じ問題が発生しましたが、時間が非常に短く、非常に優れたコードカバレッジが必要だったため、Pygmentsライブラリの周りにPHPラッパーを作成することにしました。

それはPHPygmentizatorと呼ばれます。使い方はとても簡単です。非常に基本的なマニュアルを書きました。PHPは主にWeb開発言語であるため、私はその構造をその事実に従属させ、ほとんどすべての種類のWebサイトに非常に簡単に実装できるようにしました。

構成ファイルをサポートしており、それだけでは不十分で、誰かがプロセスで変更を加える必要がある場合は、イベントも発生します。

それがどのように機能するかのデモは、基本的に、ソースコードを含む私のブログのすべての投稿にあります。たとえば、これはです

デフォルトの設定では、次の形式の文字列を指定できます。

Any text here.

[pygments=javascript]
var a = function(ar1, ar2) {
    return null;
}
[/pygments]

Any text.

そのため、タグ間のコードを強調表示し(タグは構成ファイルでカスタマイズできます)、残りは変更されません。

さらに、どの言語コードブロックが書き込まれているかを自動的に認識し、 PHPygmentizatorイベントの1つに簡単にフックして自動言語認識を提供できる、構文認識ライブラリ(ベイズ確率として分類される可能性のあるアルゴリズムを使用)をすでに作成しました。構造を少し美しくして基本的なドキュメントを書く必要があるので、おそらく今週中に公開する予定です。言語を驚くほどよく認識する十分な「学習」データを提供すれば、類似したキーワードと構造を持つ縮小されたJavaScriptや言語でさえテストし、間違いを犯すことはありません。

于 2013-02-20T00:03:45.780 に答える
1

もう1つのオプションは、ほとんどのプラットフォームで利用可能なAndreSimonによるGPLハイライトGUIプログラムを使用することです。PHP(およびその他の言語)をHTML、RTF、XMLなどに変換し、それらを切り取って目的のページに貼り付けることができます。このように、処理は1回だけ実行されます。

HTMLもCSSベースなので、好きなようにスタイルを変更できます。

個人的にはdp.SyntaxHighlighterを使用していますが、クライアント側のJavascriptを使用しているため、ニーズを満たしていません。それは私が便利だと思うけれどもそれは素晴らしいWindowsLiveプラグインを持っています。

于 2008-10-23T18:14:33.930 に答える
1

PHP Prettifyは今のところ問題なく動作します。また、 highlight_stringよりも多くのカスタマイズが可能です。

于 2016-11-07T17:52:15.013 に答える
1

PHP のビルトイン構文ハイライターを使用しないのはなぜですか?

http://php.net/manual/en/function.highlight-string.php

于 2011-06-15T13:59:30.117 に答える
1

少し遅れましたが、私は独自の PHP 構文強調表示ライブラリに取り組んでいます。まだ初期段階ですが、ブログのすべてのコード サンプルで使用しています。

ハイパーライトをチェックしてみました。かなりクールに見えますが、かなりクレイジーなことをしています。ネストされたループ、行ごとの処理など。コア クラスは 1000 行を超えるコードです。

シンプルで軽量なものに興味がある場合は、Nijikodo をチェックしてください: http://www.craigiam.com/nijikodo

于 2010-08-16T03:33:28.720 に答える
0

Krijn Hoetmer のPHP Highlighterは、完全にカスタマイズ可能な PHP クラスを提供して、PHP 構文を強調表示します。それが生成し、厳密な doctype の下で検証し、CSS で完全にスタイル設定できる HTML。

于 2009-05-02T11:43:05.670 に答える