BLOG ENTRY

文字化けさせないようにマルチバイトの文字列を分割する[PHP]

php
マルチバイトの文字列を分割する場合、分割して壊れた文字列に結合させた文字列すべてが文字化けしてしまう。そうならないようにうまく分割させる。(壊れた文字列は削除する)

<?php
//-------------------------------------------------------------
//制限文字数以上をカットする関数(EUC-JPのみで使用可能)
//分割されたマルチバイト文字は強制削除する
//-------------------------------------------------------------
function cutStringEUC($str, $limitByte) {
    $str = substr($str, 0, $limitByte);

    $ascii      = '[\x00-\x7F]';                          # 1バイト EUC-JP文字
    $twoBytes   = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])';       # 2バイト EUC-JP文字
    $threeBytes = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])';       # 3バイト EUC-JP文字
    $character  = "(?:$ascii|$twoBytes|$threeBytes)";     # EUC-JP文字

    if(preg_match("/^($character+)/x", $str, $match) > 0) {
        return $match[1];
    }
    return;
}

参考
http://www.din.or.jp/~ohzaki/perl.htm#Character

関連記事

  1. 外部複数ブログのRSS情報をWordPress上で表示する[WordPress]
  2. ページの短縮URLを貼り付けたTwitter投稿をしてもらう

WRITE COMMENT


(required)


(required)


(required)

MENU