×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
~お前もこの 気持ちよさにやられちまいな~
| |
Smartyのtplファイル内の文字を、PHPで半角化&ShiftJISに変換(mobileページ化)
モバイル用のページでは英字、数字、カナ、記号は基本的に半角の方が良いと言われています。 正確なところの理由は知りませんが、個人的には携帯の小さい画面で少しでも多くの情報を表示するための手段かと思っています。まぁ業界のお約束として捉えているところもありますがw 文字コードに関しては特に言う必要もないですかね。モバイルページはShiftJIS。 が、しかし 過去のtplファイルがごちゃ混ぜだったり、文言をPC用のtplからコピってきて変換がめんどくさかったり、文字化け防止のためにEUC-JPで記述されていたり・・・ 大人にはいろいろ事情があります。 tplファイルの記述が全角だろうが何だろうが、表示を半角に変換してしまうのがプログラマというものです。 それでは逝ってみよう。 PHPファイル、tplファイルはEUC-JPで記述すること!
<?php ・ ・ ・ // テンプレートファイルの文字を半角Shift-JIS化 mb_language("Japanese"); // 言語に日本語を設定 $Smarty =new Smarty(); // Smartyクラスのインスタンス作成 $Smarty->register_outputfilter("filter_Sjis"); // tplのoutputにフィルター"filter_Sjis"を適用 ini_set("default_charset", "SJIS"); // オプションの文字コードをShift-JISに変更 function filterSjis($buff, &$smarty) { // filter"filter_Sjis"の定義 $buff = mb_convert_kana($buff , 'ak' , 'EUC-JP'); // 全角英数字カナを半角化 return mb_convert_encoding($buff, "SJIS", "EUC-JP"); // 文字コードをEUC-JP=>Shift-JISに変換 } //** ▼▼POSTなどの入力がある場合記述▼▼ **// $_POST = convert_encoding_r($_POST); function convert_encoding_r($value){ if (is_array($value)) { return array_map('convert_encoding_r', $value); // $valueが配列なら当関数にarray_mapでコールバック } else { return mb_convert_encoding($value, 'eucjp-win', 'sjis-win'); // 配列以外ならsjis-win=>eucjp-winに変換 } } //** ▲▲POSTなどの入力がある場合記述▲▲ **// ・ ・ ・ $smarty->display("tpl_file_name.tpl"); ?> 貴女のPHPファイルに以上のコードを書き込んでtemplate_cフォルダ直下のファイルを削除してアクセスすれば・・・ 全角英数カナ記号は半角になり、文字コードはShift-JISに変わっているでしょう? 奥さんっ!これが欲しかったんだろぅ!? まぁ少なくともボクの環境ではコレでいけました。 上手くいかねーぞファック!ってご意見には対応したいと思います。 しかし1行1行コメントで説明書く必要はなかったかなぁ~? こーゆーのを冗長な説明というんだろうなぁ・・・ そんなにたいしたことしてない品 PR コメントを投稿する
この記事のトラックバックURL: <<6レスでわかるサブプライムローン問題 | ブログトップ | Google先生が毎年恒例のハロウィン仮装>> | カレンダー
最新記事
(04/08)
(04/01)
(12/29)
(06/23)
(06/23) ブログ内検索
プロフィール
中の人:
⑨
お仕事:
見習いプログラマー
趣味:
ネット、アニメ、音楽、チャリ
一言:
エロゲからクラブミュージックまで。
おじさんの趣味は108式まであるゆぉ~(・3・) |