2012-02-06 4 views

答えて

4

str_replaceはバイナリセーフでUTF-8は全単射エンコードなので、3つのパラメータがすべてUTF-8としてエンコードされている限り、検索文字列または置換にマルチバイト文字が含まれていてもstr_replaceを使用できます。

だからこそ、最初にmb_str_replace機能がないのです。

あなたのエンコーディングが全単射でない場合 - つまり両方'+ADw-''<'として表すことができるUTF-7の例<に同じ文字列の複数の表現が、ありますが、あなたは同じ(全単射)へのすべての文字列を変換する必要がありますエンコードし、str_replaceを適用し、文字列をターゲットエンコードに変換します。

+0

全単射? O_O – dynamic

+0

基本的にUTF-8では 'mb_str_replace'を忘れることができますか? UTF-8を忘れることができる他のmb_ *はどれですか? – dynamic

+0

たとえば、 'mb_substr_count();'? – dynamic

2

Reference for manipulating UTF-8 strings safely in PHP。ハードとファーストのルールはありません。ネイティブのPHP文字列関数の中には、utf-8で安全に動作するものもあれば、気にするものもあり、できないものもあります。

mb_str_replace()はありません。 3つの引数すべてが有効なUTF-8文字列である限り、「UTF-8安全機能」セクション:explode()str_replace()は安全です。

関連する問題