文字数と文字の長さ

マルチバイト処理でUTF-8などで2バイトや3バイト文字で長さが求めにくいことはありませんか?
mb_strcutで文字を加工したりしても半角や全角が混じり思う結果がでない場合あります。下記の方法はわりと上手く動いてます。

簡単に長さや指定文字数の取出しに使っています。

<?PHP
 function sub_cut($a,$ln,$st){
	$sjis=mb_convert_encoding ($a,"SJIS","UTF-8"); //UTF8-->SJIS
 	if ($ln) { //長さの指定なら
		$cut=mb_strcut($sjis,$st,$ln,"SJIS");
		$utf8=mb_convert_encoding ($cut,"UTF-8","SJIS"); //SJIS-->UTF8
		return $utf8;
	}else{
		$moji=strlen(bin2hex($sjis))/2; //文字数
		return $moji;
	}
}

文字数の取得は「Script雑感」様からの引用です。

カテゴリー: PHP