25

使うsubstr()と最後に変なキャラが出てくる

$articleText = substr($articleText,0,500);

500文字の出力があり、� <--

どうすればこれを修正できますか? エンコードの問題ですか?私の言語はギリシャ語です。

4

7 に答える 7

59

substr文字ではなく、バイトを使用してカウントしています。

greek はおそらく、UTF-8 などのマルチバイト エンコーディングを使用していることを意味し、バイト単位でカウントするのはあまり適切ではありません。

ここでは、関数を使用mb_substrすると役立つ場合があります。mb_*関数は、マルチバイトエンコーディング用に特別に作成されています。

于 2009-12-29T09:08:48.567 に答える
20

代わりに使用すると、次mb_substrのようにシングルバイト文字列だけでなく、複数のエンコーディングを処理できますsubstr

$articleText = mb_substr($articleText,0,500,'UTF-8');
于 2012-01-29T13:30:31.980 に答える
6

ユニコード文字を半分にスライスしているようです。mb_substr代わりに、Unicode セーフな文字列スライスに使用します。

于 2009-12-29T09:10:06.863 に答える
1

UTF-8 でエンコードされた文字列の代替ソリューション - これは、部分文字列を切り取る前に UTF-8 を文字に変換します。

$articleText = substr(utf8_decode($articleText),0,500);

articleText 文字列を UTF-8 に戻すには、追加の操作が必要になります。

$articleText = utf8_encode( substr(utf8_decode($articleText),0,500) );
于 2013-03-30T17:15:43.923 に答える
0

あなたはユニコード文字をカットしようとしています.だから私はphpでsubstr()試してみる代わりに好んだ.mb_substr()

substr()

substr ( string $string , int $start [, int $length ] )

mb_substr()

mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

substr() の詳細について -クレジット => ここをチェック

于 2014-10-27T12:52:24.597 に答える
0

ms_substr() は、html コードの解析後に問題を抱えていた奇妙な末尾の改行を削除する場合にも優れています。この問題は次の担当者によって処理されませんでした:

 trim() 

また:

 var_dump(preg_match('/^\n|\n$/', $variable));

また:

str_replace (array('\r\n', '\n', '\r'), ' ', $text)

捕まえないでください。

于 2012-08-18T00:59:30.770 に答える