PEAR::Text_Wikiを使ったヘルパー
追記:20070714修正
元々E_STRICTが設定されていない場合にエラーが出てたので修正。
error_reporting($E ^ E_STRICT); ↓ if(($E & E_STRICT) == E_STRICT) error_reporting($E ^ E_STRICT);
app/lib/helper/WikiHelper.php
<?php function wiki_transform($string) { // 一時的にPHP5のエラー出力からE_STRICTを外す $E = error_reporting(); if(($E & E_STRICT) == E_STRICT) error_reporting($E ^ E_STRICT); require_once('Text/Wiki.php'); $wiki = new Text_Wiki(); // 不要なパーサを無効にする $disable = 'html|include|embed|toc|phplookup|interwiki|wikilink'; foreach (explode('|', $disable) as $rule) $wiki->disableRule($rule); // 日本語文字化け対策 $wiki->setFormatConf('Xhtml', 'translate', HTML_SPECIALCHARS); $xhtml = $wiki->transform($string); // error_reportingを元に戻す error_reporting($E); return $xhtml; }
※備考
- エラー出力にE_STRICTが含まれていると、PEAR::Text_Wikiでクラス参照渡しのエラーが出るので一時的にE_STRICTを外す。
- phplookupとかinterwikiとか使わないパーサは無効にする。
- PEAR::Text_Wikiを日本語対応させる。
viewでは以下のように書ける。
<?php use_helper('Wiki'); ?> <?php echo wiki_transform($text) ?>