にっき
2008/06/29 23:35:18
mb_substr と mb_strcut
なんだかもうなべあつさんやらえどさんみたいな一発芸屋さんはごちそうさまな気がするにゃぁ・・・
とりあえずおやすみなのに6時前に起こされるのももう遠慮したいところにう(つx;【みかん
そんなことはおいといて☆
入力した文字列がばりで〜たを通過した後に途中で切られちゃってるから追跡した結果
strcut って関数が原因っぽいにう・・・
文字数制限するとしても普段は mb_substr を使ってたからよく知らない関数だったけど
引用:
ってことで実験してみたけど・・・
念のため文字こ〜どを EUC-JP にしてりとらい☆
けっきょくよくわかんなかったから PHP5.2.6 のこ〜どを追いかけてみたら
/ext/mbstring/mbstring.c L2074-
/ext/mbstring/libmbfl/mbfl/mbfilter.c L1055-
に mb_substr の入口と本体があって
/ext/mbstring/mbstring.c L2166-
/ext/mbstring/libmbfl/mbfl/mbfilter.c L1214-
に mb_strcut の入口と本体を発見☆
diff して違いを見てみたけど,mb_strcut は文字の途中で切らないようにしてても
ばいと単位で切抜きしてるから length == 文字数 にはならないにう(´・ω・`;【みかん
たぶんきっと DB の char 型が 1桁 == 1byte だった頃の負の遺産かにゃぁ・・・
でもまるち DB にしようとするとそっちにしないとなのかなぁ?
1桁 == 1文字 で DB 創ってあるからなんだかにう(´・ω・`;【みかん
何事もなく mb_substr に替えちゃっておっけぃかにゃぁ・・・
とりあえずおやすみなのに6時前に起こされるのももう遠慮したいところにう(つx;【みかん
そんなことはおいといて☆
入力した文字列がばりで〜たを通過した後に途中で切られちゃってるから追跡した結果
strcut って関数が原因っぽいにう・・・
文字数制限するとしても普段は mb_substr を使ってたからよく知らない関数だったけど
引用:
mb_strcut() は、mb_substr() と同じ処理を異なった方法で行います。こんなこと描いてあるのに実際の動作は違う気がするにう(つx;【みかん
ってことで実験してみたけど・・・
<?php
define('TEST_ENCODING','UTF-8');
define('TEST_STRING','うにうにふにふに');
define('TEST_OFFSET',0);
define('TEST_LENGTH',4);
mb_internal_encoding(TEST_ENCODING);
header('Content-Type: text/plain; charset=' . TEST_ENCODING);
echo mb_substr(TEST_STRING,TEST_OFFSET,TEST_LENGTH),"\n";
echo mb_strcut(TEST_STRING,TEST_OFFSET,TEST_LENGTH),"\n";
?>
こんなかんじのすくりぷとを創って実行してみるとうにうに
う
・・・もう違うとかそんなれべるじゃない気がするにう(´・ω・`;【みかん念のため文字こ〜どを EUC-JP にしてりとらい☆
うにうに
うに
それなら SJIS でうにうに
うに
ばっちりだめっぽいにう(´・ω・`;【みかんけっきょくよくわかんなかったから PHP5.2.6 のこ〜どを追いかけてみたら
/ext/mbstring/mbstring.c L2074-
/ext/mbstring/libmbfl/mbfl/mbfilter.c L1055-
に mb_substr の入口と本体があって
/ext/mbstring/mbstring.c L2166-
/ext/mbstring/libmbfl/mbfl/mbfilter.c L1214-
に mb_strcut の入口と本体を発見☆
diff して違いを見てみたけど,mb_strcut は文字の途中で切らないようにしてても
ばいと単位で切抜きしてるから length == 文字数 にはならないにう(´・ω・`;【みかん
たぶんきっと DB の char 型が 1桁 == 1byte だった頃の負の遺産かにゃぁ・・・
でもまるち DB にしようとするとそっちにしないとなのかなぁ?
1桁 == 1文字 で DB 創ってあるからなんだかにう(´・ω・`;【みかん
何事もなく mb_substr に替えちゃっておっけぃかにゃぁ・・・
こめんと
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん