レッドクリフ

いまさらながら「レッドクリフ」が赤壁の戦い、つまり三国志の映画であることを知った。レッド(赤い)クリフ(壁)と言われればその通りなんだけれど、その回路が頭の中で繋がらなかった。

興味がないとは恐ろしい.。。。

imagicを利用して画像のサムネイルを作成する。

imagicを利用して画像のサムネイルを作成する。

$old = 'path/to/old.jpg';
$new = 'path/to/new.jpg';
$x = 200;
$y = 200;
$ext = 'jpg';
makeThumbnail($old, $new, $x, $y, $ext) ;
function makeThumbnail($old, $new, $x, $y, $ext) {
$im = new Imagick($old);
$im->cropThumbnailImage($x, $y);
$im->setImageFormat($ext);
$success = $im->writeImage($new);
$im->destroy();
if($success){
return true;
}
}

iモードIDを取得する

2008年4月からドコモが提供しているiモードIDをPHPで受け取ってみる。コード自体は非常に簡単で、$_SERVERの中の拡張ヘッダであるHTTP_X_DCMGUIDから受け取ることができます。

なお、iモードIDの取得については、取得コードが含まれるアドレスにguid=ONというパラメータが必要になります。

例:getdcmguid.php?guid=ON

function getDcmguid(){
$dcmguid = $_SERVER['HTTP_X_DCMGUID'];
}

このiモードID、個体識別のためには非常に使えるのですが、ただ一つの難点はSSL環境ではiモードIDをはき出してくれないこと。会員認証関係はSSLを利用するサイトが多いと思われるのになぜなんでしょう?

配列のキーの文字コードを変換する。

汎用フォームなどを作成する場合に、formのname属性を日本語にする場合がある。それだけであれば問題ないのだが、PC、携帯の両方から、つまり文字コードがutf8とsjisであったりすると困る。

いろいろ悩んだあげく、配列をキーと値に一旦分割し、それぞれ文字コード変換をしてから再び結合するという力業でなんとかなった。ただし1次元配列の場合だけだけど。

$to = 'utf8';
$from = 'sjis';
$arg = array('配列1'=>'値1', '配列2'=>'値2', '配列3'=>'値3');//sjisでPOSTされる配列。
cnvertEncoding($to, $from, $arg);
function cnvertEncoding($to, $from, $arg){
if(is_array($arg)){
$a = array_keys($arg);
$b = array_values($arg);
mb_convert_variables($to, $from, $a);
mb_convert_variables($to, $from, $b);
return array_combine($a, $b);
}else{
return mb_convert_encoding($arg, $to, $from);
}
}

そもそも、sjisでコーディングすること自体がちょっといやですが・・・