マルチバイト文字列には mb_* 関数または iconv_* 関数を使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/1082780

  •  23-08-2019
  •  | 
  •  

質問

私たち全員がそうであるように、PHP でマルチバイト文字列を処理するのはそれほど簡単ではありません。たとえば、次の文字列の長さを取得したいとします。 ä

strlen('ä'); // 2, because ä equals 2 bytes
mb_strlen('ä', 'UTF-8'); // 1
iconv_strlen('ä', 'UTF-8'); // 1

どの機能を使えばいいのでしょうか?mb_* ですか、iconv_* ですか?なぜ?エンコードは UTF-8 に限定されない可能性があることを考慮してください。

事前にお願いします!

役に立ちましたか?

解決

このパワーポイントのプレゼンテーションをご覧ください。

http://www.nyphp.org/content/presentations/smallworld/April2006-nyphp-Presentation.ppt

一言で言えば:Iconv はより多くのエンコーディングをサポートしていますが、移植性は低くなります。

プレゼンテーションから:

PHPは2つの拡張機能でマルチバイトをサポートします。iconv と mbstring

  • ICONVは外部ライブラリを使用します(より多くのエンコーディングをサポートしますが、ポータブルが少ない)
  • MbStringには、図書館がPHPにバンドルされています(エンコーディングが少なくなりますが、ポータブルが増えます)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top