delicious! newsing! buzzurlにブックマーク! Yahoo!ブックマーク ライブドア - この記事をクリップ! このエントリーを含むはてなブックマーク

php :: ランダム文字列の一番目の文字をデカ文字にしてランダム色をつけるスクリプト

2007/7/6 (Fri) at 5:35 am

エントリのアイコン

ものすごいわかりにくいタイトルですが、サンプルを見れば意味が分かります↓

※このエントリは後から追記しました。一番下に改訂版の関数がありますんでそっちをご覧ください。

意味わかったでしょう?こういうのをサイトのトップにでもオモチャ的にくっつけたらどうすかという話。スクリプトはこちら↓

スクリプトをコピーして拡張子.phpでサーバにアプロードし、html中にincludeすることによって使えます。こんなかんじで↓

(記述例)<?php include("/path/to/good_quote.php"); ?>

mb_ereg_replaceで「〜文字目を置換」のやり方がよくわかんなかったのですが、結局preg_replaceを用いて、

$str = preg_replace("/^(..)/", "<span style=...>$1</span>", $str);

というふうに『日本語1文字 = 2bytes』というかんじでやったら結果オッケーでした。でもなんだか正しいやり方じゃない気がします。サーバの文字コードの設定等によってバケるかもです。同じことをmb_ereg_replace関数でやるにはパターンのトコにどう書けばよいのでしょうか。マルチバイトの正規表現についてわかりやすく解説してあるサイト等ありましたらどなたかご教授ください。

get_col()というユーザー関数がありますね。RGBの各値を128〜255の範囲でランダム生成し、これらをdechex関数で16進数に変換しています。RGBの値が大きくなるほど白に近づく、つまり色が薄くなっていくわけでありますから、ランダムの範囲を変えることによって生成される色の濃さを調整できます。いろんなパターンの範囲指定をすることによって、パステル調とか、ギラギラ調なんていうのがつくれそうです。

使った関数:

count(配列の要素数を得る)
rand(ランダム数を得る)
preg_replace(正規表現による検索置換)
dechex(数字を16進数に変換する)

あとから追記。

その後、精進をしましてもっとじょうずにできるようになりました。mb_strimwidth()関数で1文字目を取得して、ソレを置換するというふうにしたらいい風にできました。コレです↓


<?php

$good_quote_array = array(
	"夏はヤキソバがウマい!",
	"腹が痛い!",
	"ワハハ!",
	"イヒヒ",
	"梅干しをつけといてください",
	"目にゴミが入った",
);

echo good_quote();

function good_quote(){
	global $good_quote_array;
	$count = count($good_quote_array);
	$rand = rand(0,--$count);
	$str = $good_quote_array[$rand];
	$first = mb_strimwidth($str, 0, 2);
	$col = get_col();
	$quote = "<p>";
	$quote .= preg_replace("/^({$first})/", "<span style="color:$col;font-size:1000%;">$1</span>", $str);
	$quote .= "</p>";
	return $quote;
}

function get_col(){
  $r = rand(128,255); 
  $g = rand(128,255); 
	$b = rand(128,255); 
	$color = "#" . dechex($r) . dechex($g) . dechex($b); 
	return $color;

}

?>

delicious! newsing! buzzurlにブックマーク! Yahoo!ブックマーク ライブドア - この記事をクリップ! このエントリーを含むはてなブックマーク

コメント・プリーズ!

お名前 (your name)
(required)
url
(optional) ※公開されます。
メールアドレス (email)
(optional) ※公開されません。管理者にだけわかります。
コメント (comment)
(required)

※クッキーに保存すると次回から入力を省略できるので便利ですが、お使いのコンピュータに情報が残りますので、公共のパソコンなどからアクセスするような場合はチェックをはずしたほうがよいでしょう。

※コメント中のhtmlタグは実体参照に変換されます。たとえば、『<』は『&lt;』というかんじになりますのでhtmlタグをそのまま書き込んでくださってオッケーです。

one-px-ffffff-tl one-px-ffffff-tr one-px-ffffff-bl one-px-ffffff-br

PROFILEcaption

藤居ヒロヤ。ウェブデザイナー/ウェブディレクター。ウェブデザインオフィス、3OT NET主宰。名古屋市中区。「優しいデザイン」「激しいデザイン」「正しいデザイン」「セクシーなデザイン」「泣けるデザイン」「もっともなデザイン」... 。あなただけのウェブデザインを丹精込めておつくり致します。見積り依頼等、お気軽にお問い合わせ下さい。

お問い合わせフォーム

RECENT ENTRIEScaption

RECENT COMMENTScaption

TOOLScaption

BOOKMARKScaption

RESOURCEScaption

ARCHIVEcaption