関数を使用して分音記号でユニコード文字列をスライスしてmb_substrいますが、単純なsubstr関数を使用するのと同じように機能します。Unicode 文字を半分に分割し、疑問符のひし形を表示します。
例えば
echo mb_substr('ááááá', 0, 5); //Displays áá�
何が間違っている可能性がありますか?
の最後のパラメータとしてエンコーディングを指定しないと、同じ問題が発生します。mb_substr少なくとも私のサーバーでは、デフォルトでISO-8859-1.
しかし、エンコーディングを適切に設定するとUTF-8、問題なく動作します:
echo mb_substr('ááááá', 0, 5, 'UTF-8');
ブラウザで正しい表示を取得します:
ááááá
(引用、強調鉱山)を
参照してください:mb_substr
string mb_substr ( string $str , int $start [,
int $length [, string $encoding ]] )
パラメータは
encoding文字エンコーディングです。省略した場合は、内部の文字エンコーディング値が使用されます。
私は同じ問題を抱えていましたが、上記の回答も役に立ちました。を設定php.iniまたは使用する以外に、マルチバイト関数の永続的なエンコーディングを設定するために(を選択して置き換えることができます)ini_set()を使用することも役立つ場合があります。mb_internal_encoding('utf-8');utf-8