10

strlen()PHP の関数は、utf8 文字の文字列の長さを正しく返すことができませんでした。たとえばسلام、4 文字ですが、strlen を使用した後は 8 chr が返されます。

<?php
echo strlen('سلام');
?>
4

2 に答える 2

22

コア PHP 文字列関数はすべて、1 文字 = 1 バイトを想定しています。それらには、異なるエンコーディングの概念がありません。UTF-8 文字列 (バイト数ではなく) に含まれる文字数を把握するには、同等のものを使用して、文字列のエンコーディングを指定します。mb_strlen

echo mb_strlen('سلام', 'UTF-8');
于 2012-11-22T08:49:05.927 に答える