つまり、完全にPHP4で何かをコーディングしている場合はどうでしょうか。または、マルチバイト文字列の文字数をカウントする代わりに、カスタム関数またはクラス/拡張機能を使用する必要がありますか?
私が見つけられる唯一の違いは、mb_stringが不正なシーケンスを削除するのに対し、iconv_strlenは削除しないことです。
つまり、完全にPHP4で何かをコーディングしている場合はどうでしょうか。または、マルチバイト文字列の文字数をカウントする代わりに、カスタム関数またはクラス/拡張機能を使用する必要がありますか?
私が見つけられる唯一の違いは、mb_stringが不正なシーケンスを削除するのに対し、iconv_strlenは削除しないことです。
プレーンstrlenのドロップイン置換が必要な場合は、常にintを返すmb_strlenを使用します。これは非常に議論の余地がありますが(mbの許容範囲に対するiconvの正確さ)、実際にはmb_strlenのフォールトトレランスの方が適しています。php.iniまたはアプリケーションの中央の場所でmbを目的のエンコーディングに構成していることを確認してください。
PHPでのUnicodeサポートは悪い場所にあり、多くの落とし穴と例外に注意する必要があります。いくつかの大規模なアプリケーションとそのユーザーデータをUTF-8に完全に切り替えたので、私はあなたに川を泣かせることができました。