文字列の最初の20文字にアクセスするためにsubstrメソッドを使用しています。通常の状況では正常に動作しますが、rtl言語(utf8)で作業していると、間違った結果が返されます(約10文字が表示されます)。Webを検索しましたが、この問題を解決するのにn番目が役立つことがわかりました。これは私のコード行です:
substr($article['CBody'],0,20);
前もって感謝します。
文字列の最初の20文字にアクセスするためにsubstrメソッドを使用しています。通常の状況では正常に動作しますが、rtl言語(utf8)で作業していると、間違った結果が返されます(約10文字が表示されます)。Webを検索しましたが、この問題を解決するのにn番目が役立つことがわかりました。これは私のコード行です:
substr($article['CBody'],0,20);
前もって感謝します。
UTF-8としてエンコードされた文字列を使用している場合、PHP substr関数を使用して文字列の一部を取得しようとすると、文字が失われる可能性があります。これは、UTF-8文字が1バイトに制限されておらず、Unicode文字に一致する1〜4バイトの可変長であるために発生します。
mb_substr()を使用できます。これは、substrとほぼ同じように機能しますが、違いは、新しいパラメーターを追加して、エンコードの種類を指定できることですUTF-8
。
これを試して:
$str = mb_substr($article['CBody'], 0, 20, 'UTF-8');
echo utf8_decode($str);
お役に立てれば。
代わりにこれを使用してください。本文を十分に長くするための追加のテキストがあります。これはマルチバイト文字を処理します。 http://php.net/manual/en/function.mb-substr.php