strlen()
PHP の関数は、utf8 文字の文字列の長さを正しく返すことができませんでした。たとえばسلام
、4 文字ですが、strlen を使用した後は 8 chr が返されます。
<?php
echo strlen('سلام');
?>
コア PHP 文字列関数はすべて、1 文字 = 1 バイトを想定しています。それらには、異なるエンコーディングの概念がありません。UTF-8 文字列 (バイト数ではなく) に含まれる文字数を把握するには、同等のものを使用して、文字列のエンコーディングを指定します。mb_strlen
echo mb_strlen('سلام', 'UTF-8');