Когда я использую substr()
, я получаю странный символ в конце
$articleText = substr($articleText,0,500);
У меня есть вывод 500 символов и < -
Как я могу это исправить? Это проблема кодирования? Мой язык - греческий.
Когда я использую substr()
, я получаю странный символ в конце
$articleText = substr($articleText,0,500);
У меня есть вывод 500 символов и < -
Как я могу это исправить? Это проблема кодирования? Мой язык - греческий.
substr
подсчитывает использование байтов, а не символов.
greek, вероятно, означает, что вы используете некоторую многобайтовую кодировку, например UTF-8, и подсчет для каждого байта не подходит для них.
Возможно, использование mb_substr
может помочь здесь: mb_*
были созданы специально для многобайтовых кодировок.
Используйте mb_substr
вместо этого, он может иметь дело с несколькими кодировками, а не только однобайтовые строки как substr
:
$articleText = mb_substr($articleText,0,500,'UTF-8');
Похоже, вы нарезаете символ юникода пополам. Используйте mb_substr
вместо надежной нумерации строк.
Альтернативное решение для кодированных строк 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)
Не поймайте.
Вы пытаетесь вырезать символ юникода. Поэтому я предпочитаю вместо substr()
попробовать mb_substr()
в php.
зиЬзЬг()
substr ( string $string , int $start [, int $length ] )
mb_substr()
mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )
Для получения дополнительной информации о substr() - Credits = > Проверить здесь