携帯サイト用inputフィールドのデフォルトIME設定を3キャリア共通で得る関数
2009年01月27日-
携帯サイト用inputフィールドのデフォルトIME設定を3キャリア共通で得る関数を作ってみました。
特段、素晴らしいものでもないけれど、作ったのでシェアです。
前提としてUserAgentの判別をしておく必要があります。
$attr = mobileform("hiragana", "docomo"); // istyle="1" が返る
$attr = mobileform("alphabet", "au"); // format="a" が返る
$attr = mobileform("numeric", "softbank"); // mode="numeric" が返る
<input type="text" $attr> のように出力すれば、3キャリアごとに違うinput属性を作ってくれるというもの。softbankがhiragana,alphabetなどになっていて一番分かりやすかったのでsoftbankを基本としています。<?php
function mobileform($key, $agent) {
$docomo = array(
"hiragana" => "1",
"alphabet" => "3",
"numeric" => "4"
);
$au = array(
"hiragana" => "*M",
"alphabet" => "*a",
"numeric" => "*N"
);
if ($agent == 'docomo') { // docomo
return " istyle=\"".$docomo[$key]."\" ";
} elseif ($agent == "softbank") { // softbank
return " mode=\"".$key."\" ";
} elseif ($agent == "au") { // au
return " format=\"".$au[$key]."\" ";
}
}
次に、Smarty プラグインも作ったのでよければお使い下さい。
ファイル名:「function.mobileform.php」として以下内容を Smartyのpluginsディレクトリに設置<?php
/*
* Usage
*
* 予め、$smarty->assign("mobile_agent", "au"); のような形で判別したキャリアを割り当てておく
* docomoの場合はdocomo、softbankの場合はsoftbank、auの場合はau
*
* テンプレート内で以下のように利用する
*
* <input type="text" name="p1"{mobileform key="hiragana"}> ひらがな
* <input type="text" name="p2"{mobileform key="alphabet"}> アルファベット
* <input type="text" name="p3"{mobileform key="numeric"}> 数字
*/
function smarty_function_mobileform($params, &$smarty)
{
$key = $params['key'];
$docomo = array(
"hiragana" => "1",
"alphabet" => "3",
"numeric" => "4"
);
$au = array(
"hiragana" => "*M",
"alphabet" => "*a",
"numeric" => "*N"
);
$agent = $smarty->get_template_vars('mobile_agent');
if ($agent == 'docomo') { // docomo
return " istyle=\"".$docomo[$key]."\" ";
} elseif ($agent == "softbank") { // softbank
return " mode=\"".$key."\" ";
} elseif ($agent == "au") { // au
return " format=\"".$au[$key]."\" ";
}
}
使い方は、上記ソース内コメントに書いておきました。
やっぱり、こういうところは3キャリア共通にしてくれないと、こういう仕組みを作る必要があるので共通にしてくれると助かるなぁと思いますね。今更しょうがないと思いますが。
エージェントの判別は「 PHPで携帯のエージェント判別法 - phpspot」などが参考に出来ます。
Smarty版を使う場合は「ke-tai.org > Blog Archive > 携帯サイトでSmartyを使う場合の注意点」も参考にしてください。
関連サイト:PHPで携帯サイト - phpspot