読者です 読者をやめる 読者になる 読者になる

ブログシステムが、日の目を来る日が近づいてきた。

ほとんど全ての実装が終わり、微調整にかかった。

といっても、最後の山場である、「携帯電話でアクセス」モードは当分先。
実際対応しようと思えば、すぐにでもできるほど簡単だが、本体を変更したらそれに沿って、携帯サイトも変更しないといけないので、最後の火入れみたいなものである。

今日は、日記に書き込める機能で、HTMLタグを相当数可能にした。
対応するんが、めっちゃだるかった。

多分、だれも使わないだろうなぁ。と思いながらも、はてなダイアリーとほとんど同じ基準にした。
私も知らないタグもあったし。

ここに、対応したタグ一覧がある。
http://ymlabo.ddo.jp/~ymlab/blog/hforum/index.php?act=showmsg&thNo=21&logNo=0&msgnum=1-10

次に、はてなダイアリーで対応しているyoutube記法でもしてやるか。と思いこれにのめりこむ。
大変すぎ。

youtube記法とは、youtubeの動画の右側の方にある、箱のなかの、URLという人をコピーして、
[ここにそのURLをはりつける。:movie]

なんてことをしてあげると、ようするに、

大かっこコピーしたURLコロンmovieと記入大かっこ閉じる
してあげると、ブログにyoutubeの動画を貼り付けられるのだ。

完全に真似をすると怒られそうなので、

movieのところを、
youtubeとした。

コンピュータに、こういう規則をぱっと判断させるのは、至難の業。
そこで正規表現を使うことにした。
正規表現は、はっきり言って気持ち悪いほど記号の世界で、さっぱりわからんの世界。
でも、普通にプログラムを書くよりも簡単?アンド楽らしいので、勉強してみた。
やっぱりわからん。
でもちょっとうまく動くと、嬉しい。

とりあえず実装できた。
2時間あまりかけて、書いたコードがたったこれだけ。

つまり、さっきの大かっこコピーしたURLコロンyoutubeと記入大かっこ閉じる
という規則は、正規表現にすると、

/\[(http)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(:youtube)\]/

となるのである。

記念にテレポートする猫を、開発しているWeblogシステムに貼り付けた。
http://ymlabo.ddo.jp/~ymlab/blog/index.php?type=4&year=2006&month=10&day=10


でも、たった今17分前に入ってきた情報によると、
http://gigazine.net/index.php?/news/comments/20061010_google_youtube/

youtubegoogleに買収されそう・・・。

/** youtube記法対策
* @param string 文字列
* @return 整形データ
*/
function formatYouTube( $string ) {
/**{{{*/
	//youtube記法
	$pattern_youtube = '/\[(http)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(:youtube)\]/';
	if ( preg_match($pattern_youtube, $string, $array)) {
		$url = $array[1].$array[2];
		$url = str_replace( "?", "/", $url);
		$url = str_replace( "=", "/", $url);
		$replace = "<object width=\"425\" height=\"350\">\n\t<param name=\"movie\" value=\"".$url."\"></param>";
		$replace.= "<param name=\"wmode\" value=\"transparent\"></param>";
		$replace.= "<embed src=\"".$url."\" type=\"application/x-shockwave-flash\" wmode=\"transparent\"";
		$replace .= " width=\"425\" height=\"350\"></embed></object>";
		$string = preg_replace($pattern_youtube, $replace, $string);
	} else {}
	return $string;
}
/**}}}*/