Tag: haik Tag: plugin Tag: php

別窓リンクプラグイン

&link(http://haik.oi21.net/index.php?plugin_link);

と記述した場合に、「target="_BLANK"」を指定したリンクにします。

http://haik.oi21.net/index.php?plugin_link

ただし、「?」が含まれるリンクは動作がちょっと変です。上の例になりますが、ここでは、プレビュー中は有効ですが、ページの更新をしたらリンクの部分は単に文字列になりました。この場合、下のようにURLの末尾に&を付けるとリンクとして処理されるようになります。でもこれはリンクの処理が変な気がします。セキュリティ関係の対策でURLを正規表現でフィルタリングしているのでしょうか?

&link(http://haik.oi21.net/index.php?plugin_link&);

とすると動作結果は下になりました。

http://haik.oi21.net/index.php?plugin_link&

ということで、この時のバージョンはHAIKの7.2.1ですが、リンクURLの扱いがちょっと変です。


ファイル名: plugin/link.inc.php

<?php
// PukiWiki - Yet another WikiWikiWeb clone.
// $Id: link.inc.php,v 1.14 2018/07/13 16:58:00 ishimaru Exp $
//
// 2018-07-13 plugin_link_inline
// link another window
//
// usage
// &link(http://hogehoge.co.jp/~sample/);
// → <a href="http://hogehoge.co.jp/~sample/" target="_BLANK">http://hogehoge.co.jp/~sample/</a> 
 
// &link(http://hogehoge.co.jp/~sample/,linkstrings,sitei);
// → <a href="http://hogehoge.co.jp/~sample/" target="sitei">linkstrings</a> 
 
function plugin_link_inline()
{
    $args = func_get_args();
 
    $arg = isset($args[2]) ? strtoupper($args[2]) : '';
    if ($arg == '') {
        $target = '_BLANK';
    } else {
        $target = $arg;
    }
 
    $url = isset($args[0]) ? $args[0] : '';
    $str = isset($args[1]) ? $args[1] : '';
    $str = $str!='' ? $str : $args[0];
 
    return "<a href=\"$url\" target=\"$target\">$str</a>";
}