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;
}
?>
コメント・プリーズ!
PROFILE![]()
藤居ヒロヤ。ウェブデザイナー/ウェブディレクター。ウェブデザインオフィス、3OT NET主宰。名古屋市中区。「優しいデザイン」「激しいデザイン」「正しいデザイン」「セクシーなデザイン」「泣けるデザイン」「もっともなデザイン」... 。あなただけのウェブデザインを丹精込めておつくり致します。見積り依頼等、お気軽にお問い合わせ下さい。
- www. http://www.3ot.net/
- email. admin [atmark] 3ot.net
- phone. 052 323 7376
RECENT ENTRIES![]()
- トウモロコシがおいしい
- ダイコクドラッグが近所にできた
- ライブドアのBLOGOSをよく読みます
- jQuery :: 画像のリロード
- タムの絵
- Javascript :: ecl.jsにながらくお世話になりました
- サーバ移転&ブログのデザインをすこし変えました
- php :: 正規表現 :: 名前つきキャプチャというのを習った
- jQuery :: ネストしたリスト + ui.sortable.js
- jQuery :: event delegationてナニ?
RECENT COMMENTS![]()
- embedタグを使わずにYouTubeとかのFlashを貼る for W3C [6]
- Rusk (11/05)
- ふ (09/07)
- ふ (09/07)
- 3次元写真撮影機フォトシミリ (09/07)
- jQuery :: チェックボックスが並んだテーブルをjQueryでどーこーするサンプル [5]
- 初心者 (08/05)
- s-box.js - Lightbox-like Javascript with jQuery and SimpleModal plugin [6]
- Hiroya (05/04)
- Billie (05/04)
- CSS :: height:1pxのボックス要素をつくるには [2]
- ふ (02/19)
- にゃん (02/18)
- php :: MagpieRSS :: 他サイトのRSSを表示するクラスライブラリ [2]
- ふ (02/04)
- 青樹洋文 (02/03)
- トウモロコシがおいしい [4]
- ふ (07/09)
- いら (07/03)
- ふ (07/03)
- いら (07/03)
TOOLS![]()
- s-box.js
- Link2WikipediaEncoder
- QR_CodeGenerator
- PagerankChecker
- IntrocucePhpCodeOnBlog
- FaviconGenerator
- Whois
- SiteThumbnailGenerator (Beta)
- EmailAddressEncoder (Legacy!)
BOOKMARKS![]()
RESOURCES![]()
- 99designs
- COMPUTER ARTS
- CPAN
- PHP標準関数逆引き辞典
- SMASHING MAGAZINE
- UNIXコマンド
- ajaxload.info
- deviantART
- deviantART :: PS Brushes
- deviantART :: PS Shapes
- fotosearch.com
- hotscripts.com
- hotscripts.com :: php
- iconlet.com
- jQuery Reference
- php.net :: 関数レファレンス
- psbrushes.net
- turnkeyforms.com
ARCHIVE![]()
- 2010年7月 (1)
- 2010年1月 (1)
- 2009年12月 (2)
- 2009年11月 (3)
- 2009年10月 (1)
- 2009年9月 (9)
- 2009年8月 (7)
- 2009年6月 (7)
- 2009年5月 (1)
- 2009年4月 (8)
- 2009年3月 (1)
- 2009年1月 (1)
- 2008年12月 (3)
- 2008年11月 (1)
- 2008年4月 (1)
- 2008年1月 (3)
- 2007年12月 (1)
- 2007年10月 (3)
- 2007年9月 (5)
- 2007年8月 (4)
- 2007年7月 (13)
- 2007年6月 (22)
- 2007年5月 (30)
- 2007年4月 (15)
- 2007年3月 (12)
- 2007年2月 (7)
- 2007年1月 (16)
- 2006年12月 (23)
- 2006年11月 (9)
- 2006年10月 (3)
- 2006年9月 (2)
- 2006年8月 (6)
- 2006年7月 (4)
- 2006年6月 (6)
- 2006年5月 (10)
- 2006年3月 (17)
- 2006年2月 (8)
- すべての投稿 (266)
