[PHP-users 32376] Re: mb_strcutの挙動について

KUROSAKI Luka luka @ ivoryworks.com
2007年 7月 4日 (水) 18:08:16 JST


こんにちは。
黒咲です。

 ちゃんと確認していないのですけど、

<?php
  $strings = 'あいうえおかきくけこ';
  echo mb_strcut($strings, 1, 20, "EUC-JP")

  /* 結果:あいうえおかきくけ */
?>

 mb_strcut()は、その第2パラメータがマルチバイト文字の2バイト目以降を指
している場合、処理開始位置をマルチバイト文字の1バイト目にシフトする仕様
ですが、mb_strcut()内の処理で、シフトした際に文字列終端までの長さ(シフト
前の処理開始位置から文字列終端までの長さを元にしている?)が更新されていな
い為、上記例なら'こ'の1バイト目が処理終了位置となってしまい、結果として'
こ'が切り飛ばされてしまっているのではないか思います。

 うまく説明できない。
mbfl_strcut()のstartとendの扱いが良くないのかも。
違っていたらすみません。




PHP-users メーリングリストの案内