ちょっと使い方がわからなくWikilinkの変換で手間取ったのでメモを残しておく。
まずはインストール。
# pear install Text_Wiki_Mediawiki-0.2.0
サンプルと結果(No Good)
<?php
require_once "Text/Wiki/Mediawiki.php";
$wiki=new Text_Wiki_Mediawiki();
$text = "
*[[hoge]]
*[[hoge:fuga]]
*[[hoge:piyo|piyo]]
";
echo($wiki->transform($text,'Xhtml'));
実行結果:
<ul>
<li>hoge<a class="" href="http://example.com/new.php?page=hoge">?</a></li>
<li>hoge:fuga<a class="" href="http://example.com/new.php?page=hoge%3Afuga">?</a></li>
<li>piyo<a class="" href="http://example.com/new.php?page=hoge%3Apiyo">?</a></li>
</ul>
urlがexample.comなのと、アンカーテキストが?なのを直したい。ダラダラと調べてった経過も記すが、直した結果のサンプルはこっち。
軽くググるが見つけられないので、ソースを読む。
全部は読めないので当たりをつけて読む。定義箇所は、Text/Wiki/Render/Xhtml/Wikilink.php かな。
class Text_Wiki_Render_Xhtml_Wikilink extends Text_Wiki_Render {
var $conf = array(
'pages' => array(), // set to null or false to turn off page checks
'view_url' => 'http://example.com/index.php?page=%s',
'new_url' => 'http://example.com/new.php?page=%s',
'new_text' => '?',
'new_text_pos' => 'after', // 'before', 'after', or null/false
'css' => null,
'css_new' => null,
'exists_callback' => null // call_user_func() callback
);
・・・
$href = $this->getConf('new_url', null);
・・・
getConfはconfにあればそれを返す。なければ第2引数を返すだけのもの。なんで、confのnew_urlを置き換えれることができれば良い分けか。もう少し見てみる。
function Text_Wiki_Render(&$obj)
{
// keep a reference to the calling Text_Wiki object
$this->wiki =& $obj;
・・・
// is there a format and a rule?
if ($this->format && $this->rule &&
isset($this->wiki->renderConf[$this->format][$this->rule]) &&
is_array($this->wiki->renderConf[$this->format][$this->rule])) {
// this is a rule render object
$this->conf = array_merge(
$this->conf,
$this->wiki->renderConf[$this->format][$this->rule]
);
}
}
Text/Wiki/Render.phpにarray_mergeしてる場所発見!wikiのrenderConfに追加できりゃ良さげってことで、今度はText/Wiki.phpを見る。
function setRenderConf($format, $rule, $arg1, $arg2 = null)
これでRenderConfは設定できそう。format、ruleがわからずもう少し調べるのは続いたが割愛。サンプルと結果(Good)
<?php
require_once "Text/Wiki/Mediawiki.php";
$wiki=new Text_Wiki_Mediawiki();
$wiki->setRenderConf('Xhtml', 'Wikilink', 'new_url', 'http://exapmle.co.jp/%s');
$wiki->setRenderConf('Xhtml', 'Wikilink', 'new_text', '');
$text = "
*[[hoge]]
*[[hoge:fuga]]
*[[hoge:piyo|piyo]]
";
echo($wiki->transform($text,'Xhtml'));
実行結果:
<ul>
<li><a class="" href="http://exapmle.co.jp/hoge">hoge</a></li>
<li><a class="" href="http://exapmle.co.jp/hoge%3Afuga">hoge:fuga</a></li>
<li><a class="" href="http://exapmle.co.jp/hoge%3Apiyo">piyo</a></li>
</ul>