携帯閲覧時に全角→半角に自動変換する改造

機種依存文字である半角カタカナは Mac だと文字化けするため、使わないのがネットの基本です。しかし解像度が低い携帯端末で閲覧する場合は、1行に多く表示できる半角カタカナの方が読みやすくなります。
また全角(2 bytes)に比べ半角(1 byte)に変換する事で、若干ですがパケット代の節約にもなります。

そこでスクリプトを少し改造して、携帯端末でアクセスした時は「全角→半角」に自動的に変換できるようにしてしまいましょう。

必要条件

お使いのサーバーで PHP のマルチバイト文字列関数(mbstring)が有効である必要があります。
無効である場合、エラーになるので注意してください。

改造方法(BlognPlus v2.3.2 の場合)

以下の改造を施す事で、「全角カタカナ→半角カタカナ」「全角英数字→半角英数字」「全角スペース→半角スペース」に自動的に変換されます。
携帯端末以外ではそのまま表示されるので、Mac だと文字化けするという心配もありません。

変換されるのは以下の部分です。

記事部分の変換

「index.php」1000行目あたりに赤い文字列部分を追加

/* ----- ログリスト用スキン変換 ----- */ 
function blogn_log_list_skin_replace($tmpbuf, $key, $val, $userlist, $category1, $category2, $mode) { 
if (BLOGN_MOBILE_KEY == 1) { 
    $val["title"] = mb_convert_kana($val["title"], "ask"); 
    $val["mes"] = mb_convert_kana($val["mes"], "ask"); 
    $val["more"] = mb_convert_kana($val["more"], "ask"); 
}
$linkurl = '<a href="index.php?e='.$val["id"].'">'.$val["title"].''; 
$tmpbuf = str_replace("{LOGTITLE}", $linkurl, $tmpbuf);

コメント部分の変換

「index.php」1200行目あたりに赤い文字列部分を追加

$comment = get_magic_quotes_gpc() ? stripslashes($cmtval["comment"]) : $cmtval["comment"]; //¥を削除 
$comment = preg_replace("/&lt;(br)&gt;/i", "<br>", $comment); 
$comment = preg_replace("/&lt;(br)([ ]+[\w\W]+?)&gt;/i", "<br\\2>", $comment); 
if (BLOGN_MOBILE_KEY == 1) { 
    $comment = mb_convert_kana($comment, "ask"); 
}
$cmt_tmp_buf = str_replace ("{COMMENTBODY}", $comment, $cmt_tmp_buf);

トラックバック部分の変換

「index.php」1200行目あたりに赤い文字列部分を追加

$trackback = get_magic_quotes_gpc() ? stripslashes($trkval["mes"]) : $trkval["mes"]; //¥を削除
$trackback = preg_replace("/&lt;(br)&gt;/i", "<br>", $trackback);
$trackback = preg_replace("/&lt;(br)([ ]+[\w\W]+?)&gt;/i", "<br\\2>", $trackback);
if (BLOGN_MOBILE_KEY == 1) { 
    $trackback = mb_convert_kana($trackback, "ask"); 
}
$trk_tmp_buf = str_replace ("{TRACKBACKBODY}", $trackback, $trk_tmp_buf);

サイト作成のヒント集に戻る