2017-06-26 4 views
0

"substr"を使用すると、テキストが正しく表示されないのはなぜですか?utf-8でsubstrを動作させるにはどうすればよいですか?

function limitstring($input,$number) { 
    if (strlen($input) > $number){ 
     $input = substr($input, 0, $number) . '...'; 
    } 
    return $input; 
} 

入力:

echo $row['text']; 

出力:加瀬

入力:

limitstring($row['text'],60); 

出力: KSE ...

+1

あなたは 'substr()'を意味しますか?それ以外の場合、 'limitstring()'がロールした関数であれば、実際に何をしているのかを示す必要があります。 – CD001

+0

@ CD001申し訳ありません、機能を忘れました。 2番目に投稿します – Jarla

+1

私はlimitstring php関数についてはわかりませんが、htmlページに表示している場合は、 ''を頭の中に入れます – Kaddath

答えて

0

できない場合に切り替えますとmb_substr()のどちらの理由であれ、適切な修正が必要な場合は、mbstring.func_overload設定ディレクティブを有効にする必要があります。また、すべての通常のバイトベースの文字列関数がマルチバイト相当のものであるとは限りません。

これは主にハックであり、PHP/7.2.0では廃止予定です。

+0

mbstring.func_overloadは、特に複数の文字エンコーディングでデータを処理する必要のあるスクリプトを持っている場合は、解決できるよりも多くの問題を引き起こす可能性があります(しばしば!)。近い将来に廃止予定であり、近い将来に削除される予定です – GordonM

+0

@ GordonM確かに、それが私の答えで表現しようとしていることです。 –

関連する問題