CSS Selector Generator | CSS のセレクタ一覧を一発で自動生成!

08

02月2008年

Smarty研究(4) URL らしき文字列に自動でリンクをはる修飾子

kimoto 19:55 PM

久々に Smarty のお話。
今回は、URL と思しき文字列を自動でリンクする修正子を作る、です。

とあるプロジェクトで、URL を自動でリンクする必要性が出てきた時に、
相変わらず面倒くさがりS級ライセンス保持者の僕は、
「自前で作るのめんどくさいーなんかいいもんないかー」とブツブツ言いながら
以前のプロジェクトの Smarty のプラグインディレクトリを覗いていたら、
ありました!その名も「auto_link」!なあんだ、便利なもんあるじゃん。
と思ってソースをよく見てみたら、
「 * @author Kimoto」
俺じゃん!作ったの!全然おぼえてねぇー!

はい。という事で、ソースです。

function smarty_modifier_auto_link($string, $type = 'url', $text = 'URL')
{
    // URL形式のチェック用文字列(正規表現)
    $regstr = "https?://[a-zA-Z0-9.-]{2,}(:[0-9]+)?(/[_.!~*a-zA-Z0-9;/?:@&=+$,%#-]+)?/?";
    switch ($type) {
        case 'url':
            return ereg_replace($regstr,"<a href=\"\\0\" target=\"_blank\" title=\"\\0\">\\0</a>", $string);
            break;
        case 'text':
            return ereg_replace($regstr,"[ <a href=\"\\0\" target=\"_blank\" title=\"\\0\">{$text}</a> ]", $string);
            break;
        default:
            return $string;
    }
}

これを「modifier.auto_link.php」という名前で保存し、「smarty/libs/plugins」の中に放り込めば、

$smarty->assign('string', 'シーブレインはこちら http://c-brains.jp/');

ってな感じに assign して、テンプレート内で

{$string|auto_link}

とすることで

シーブレインはこちら http://c-brains.jp/

と、このように表示されます。 また、オプションとして、

{$string|auto_link:"text":"URL"}

などとすると

シーブレインはこちら [ URL ]

こんな感じになります。

ということで、作った本人に忘れられていた可哀想な修飾子ですが、
良ければ使ってあげてください。

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/1415
###はmt-tb.cgiに変更してください。

コメント

Kimoto様、
はじめまして。本当にありがとうございます。
めちゃくちゃ助かりました。
私のような素人には、本当にありがたいことで、ソースも公開していただき、感謝感謝です。
本当にありがとうございます。
これからもよろしくお願いいたします。有難うございました。m(_ _)m

Tomoyo さま

コメントありがとうございます!
お役に立てたようで、なによりです!

Smarty、便利ですよね。
最近はフレームワークを利用することが多く Smarty を触る機会が減ってきてますが、
また何かあったら記事にしようと思います。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

特集

  • ステップアップ!CakePHP
  • 作って学ぶjQuery