substr()
を使用すると、最後に奇妙な文字が表示されます
$articleText = substr($articleText,0,500);
500文字の出力があります。<-
どうすればこれを修正できますか?エンコーディングの問題ですか?私の言語はギリシャ語です。
ユニコード文字を半分にスライスしているようです。使用する - mb_substr
代わりにUnicodeで安全な文字列スライス。
UTF-8でエンコードされた文字列の代替ソリューション-これにより、部分文字列をカットする前にUTF-8が文字に変換されます。
$articleText = substr(utf8_decode($articleText),0,500);
ArticleText文字列をUTF-8に戻すには、追加の操作が必要になります。
$articleText = utf8_encode( substr(utf8_decode($articleText),0,500) );
この機能を使用して、それは私のために働いた
function substr_unicode($str, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
クレジット: http://php.net/manual/en/function.mb-substr.php#107698
ms_substr()は、htmlコードの解析後に問題が発生した奇妙な末尾の改行も削除するのに最適です。問題は次の人によって処理されませんでした:
trim()
または:
var_dump(preg_match('/^\n|\n$/', $variable));
または:
str_replace (array('\r\n', '\n', '\r'), ' ', $text)
捕まらないでください。
あなたはユニコード文字を切り取ろうとしているので、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()の詳細について- クレジット=>ここをチェック