• ベストアンサー

【PHP】常にマルチバイト文字列関数でいいですか?

PHP初心者です。バージョンは4です。 文字を扱う関数はマルチバイト対応と非対応があるみたいですがその使い分けがわかりません。いっそ常にマルチバイト対応にしとけばいいのではと考えてしまいますがどうなのでしょう?たとえば、置換の場合、 preg_replace と str_replace がありますが、常に preg_replace を使っていて問題はないのでしょうか? お詳しい方、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

基本的にはmb関数で問題ないと思います。 稀にmbstringが無効になっているレンタルサーバがあったり シングルバイト文字しかありえないケースでは普通の文字列関数でよいと思います。 ちなみにUTF-8ならpregもマルチバイトに対応できます。

takosuke88
質問者

お礼

やっぱそうですか。 マルチバイト非対応関数は覚えなくて良さそうですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • tanshio2
  • ベストアンサー率54% (20/37)
回答No.2

preg_replaceはPerl互換正規表現の文字列置換、 str_replaceは単なる文字列置換で、マルチバイトとは関係ないですよ。 No1お方が答えてるように、mb_xxxxx となっているのがマルチバイトが通る 関数です。 常にmb_xxxxx を使っていれば1バイト文字でもちゃんと動作しますが、 逆に単なるxxxxxの場合にマルチバイト文字が入ってきた場合には動作は不定です。

takosuke88
質問者

お礼

ありがとうございます。 つまり、使い分けなど考えずに、常に「mb_」を付けていて問題ないということでしょうか? そうならstr_replaceはとりあえず必要ないものということでしょうか?

すると、全ての回答が全文表示されます。
  • TA-HT81S
  • ベストアンサー率39% (72/184)
回答No.1

str_replaceに対して、mb_str_replaceでは? マルチバイトな正規表現ってなに??

すると、全ての回答が全文表示されます。

関連するQ&A