mailto記法

さっき院試の出願用書類を書き終わったのだけど, 80円切手やら成績証明書やら
いろいろ用意しないといけないので結構めんどくさい。とっとと行こう。

・・・と思ったけど, 関数1個ぐらい書いてからでもいいだろうと思ってmailto記法を実装。

mailto:cubicdaiya@gmail.comとやると, 以下のように変換。

<a href="mailto:cubicdaiya@gmail.com">cubicdaiya@gmail.com</a>

というか, はてなのmailto記法ほぼそのまんま。

とりあえず書いてみた。

private function createMailTo(){
    $text = "";
    $lines = explode("\n", $this->text);
    $reg = /^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i;
    	
    foreach($lines as $line){
    	if(preg_match($reg, $line, $ret)){
		$mail = $ret[1];
    		$line = preg_replace($reg, "<a href=\"mailto:$mail\">".$mail."</a>", $line);
   	}
    	$text .= $line."\n";
    }
    $this->text = $text;
}

追記:

しかしよく考えたら, preg_matchは最初にマッチした文字列しか返さないので
これだと同じ行に2つ以上mailto:〜って書けない。似たようなミスがリンク記法にも見つかった。


id:cubicdaiya:20060802

解決した。