2009/7/22 水曜日

mb_splitが使えない環境でのマルチバイト文字列の分割

カテゴリー: — kurowanko @ 15:40:34

マルチバイト文字列の分割は、mb_split関数を使うことでできますが、環境によってはmb_splitが使えない場合があります。
そうした環境の場合、どのように文字列を分裂すればいいのかを調べました。

『月曜・3』という文字列を『月曜』と『3』に分割する時、split関数を用いて『・』をターゲットにして分割を行いますが、『・』は全角のマルチバイト文字なのでマルチバイトに対応していないsplit関数ではうまく行ってくれません。
そこで、下記のようにしたら、うまく分割をしてくれました。

<?php
$sample =”月曜・3”;
echo($sample.”<br>”);
echo(bin2hex(”月曜・3”).”<br>”);
echo(bin2hex(”・”).”<br>”);
$sample_ = split(bin2hex(”・”), bin2hex($sample));
$sample_[0] = pack(”H*”,$sample_[0]);
$sample_[1] = pack(”H*”,$sample_[1]);
echo(”finish:”. $sample_[0].”<br>”);
echo(”finish:”. $sample_[1].”<br>”);
?>

分割をする文字列(月曜・3)と分割の起点とする文字(・)をbin2hexを使って16進数に変換し、その値を用いてsplitを行います。
16進数に変換すると、『月曜・3』は『e69c88e69b9ce383bbefbc93』、『・』は『e383bb』となります。
分割をした後で、pack関数を使い文字を元に戻します。
これで、mb_splitが使えない環境でもマルチバイト文字列を分割することができました。

コメントはまだありません »

コメントはまだありません。

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ

You must be logged in to post a comment.

HTML convert time: 0.306 sec. Powered by WordPress ME