前回、「[PEAR] オリジナルのWikiエンジンを作れるText_Wiki 」で書いた、自分独自のWikiエンジンを作れるPEARパッケージのTEXT_Wikiですが、Wikipediaで使われているMediaWiki用の文法を使える、Text_Wiki_Mediawiki というパッケージもあるため、これを使ってみました。
現在、0.2.0というバージョンでまだアルファ版です。(2009年8月にアップデートされたばかり)
そのため実装されていない機能もあるかもしれません。
Text_Wiki_Mediawikiをインストールする
インストールは「pear install」で、といきたいところですがバージョンがアルファ版のためそのままじゃ上手くいかないかもしれません。
# pear install Text_Wiki_Mediawiki Failed to download pear/Text_Wiki_Mediawiki within preferred state "stable", latest release is version 0.2.0, stability "alpha", use "channel://pear.php.net/Text_Wiki_Mediawiki-0.2.0" to install Cannot initialize 'channel://pear.php.net/Text_Wiki_Mediawiki', invalid or missing package file Package "channel://pear.php.net/Text_Wiki_Mediawiki" is not valid install failed
のようなエラーが出た場合は、最後に「-alpha」をつけてインストールしましょう。
# pear install Text_Wiki_Mediawiki-alpha
基本的には、stableなものしかインストールさせないための措置です。
詳しくは、PEARのマニュアルページ を参照。
あと、Text_Wikiを拡張して作られているため、Text_Wikiパッケージも必要になります。
Text_Wiki_Mediawikiを使ってみる
使い方は、Text_Wikiと基本同じですが、ファイルの読み込みとクラスオブジェクトの生成方法が異なります。
<?php require_once "Text/Wiki/Mediawiki.php"; $wiki=new Text_Wiki_Mediawiki(); $wiki->setFormatConf('Xhtml','translate',HTML_SPECIALCHARS); $text = "{| |- |ほげほげ |- |ふがふが |}"; echo($wiki->transform($text,'xhtml')); ?>
$ php mediawiki.php <table> <tr> <td>ほげほげ</td> </tr> <tr> <td>ふがふが</td> </tr> </table>
この例では、前回の「[PEAR] オリジナルのWikiエンジンを作れるText_Wiki
」の最後に書いたサンプルと違い、テーブルの表記がMediawiki流になっています。
使える文法は、PEARパッケージのMediaWiki内のディレクトリを覗いてみればわかります。
# ls /path/to/pear/Text/Wiki/Parse/Mediawiki/ Break.php Deflist.php List.php Raw.php Superscript.php Url.php Code.php Emphasis.php Newline.php Redirect.php Table.php Wikilink.php Comment.php Heading.php Preformatted.php Subscript.php Tt.php
Text_Wikiと比べて利用できる文法は少ないですが、MediaWikiに普段から慣れているという場合は、こちらを利用した方が便利かもしれませんね。
いいとこ取りすれば、オリジナルのWikiエンジンを使うことも可能です。
関連記事
[PHP] 余計なHTMLタグや属性を消してくれるHTML Purifier
[PHP] pChartの使い方 - 棒グラフとレーダーチャートを描いてみる
ノンプログラミングでも利用可能!PHPで多様なグラフを作れるpChart
PHP_CodeSnifferでコーディング規約に準拠しているかチェックをする
[PEAR] オリジナルのWikiエンジンを作れるText_Wiki
自分だけのオリジナルWikipediaを作ろう! - MediaWikiインストール -