[PHP-users 1976] Re: シングルバイト文字とマルチバイト文字の分割
Osamu Shigematsu
php-users@php.gr.jp
Tue, 11 Sep 2001 11:42:25 +0900
重松です。ゴメンなさい、書きかけで送ってしまいました。
アイデアだけですが、
(1) JIS に変換して、explode()。
必ず奇数番目に日本語 (ただし JIS でエスケープシーケンスが欠落したもの)
がはいる。2 バイト文字で終わる場合には、最後に空の要素ができる。
$txt = 'JIS のテキストです。'; // JIS で!!
$tok = split('漢字IN|漢字OUTのエスケープシーケンス',$txt);
(2) mbereg() を使う。
$txt = '日本語と alphabet の混在した text です。';
$tok = array();
while(!$txt){
if(mbereg('^([1バイトの範囲の文字]+)([^1バイトの範囲の文
字]+)',$buf)){
// 混在している
$tok[] = $buf[1];
$tok[] = $buf[2];
$txt = substr($txt,strlen($buf[0]);
}else{
// 混在していない
// 必ず奇数番目の要素にマルチバイト文字が欲しいなら...
if(!count($tok))
$tok[] = ''; // マルチバイト文字から始まる
$tok[] = $txt;
$txt = '';
}
}
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp