Подтвердить что ты не робот

Ошибка PHP substr() PHP

Когда я использую substr(), я получаю странный символ в конце

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

У меня есть вывод 500 символов и < -

Как я могу это исправить? Это проблема кодирования? Мой язык - греческий.

4b9b3361

Ответ 1

substr подсчитывает использование байтов, а не символов.

greek, вероятно, означает, что вы используете некоторую многобайтовую кодировку, например UTF-8, и подсчет для каждого байта не подходит для них.

Возможно, использование mb_substr может помочь здесь: mb_* были созданы специально для многобайтовых кодировок.

Ответ 2

Используйте mb_substr вместо этого, он может иметь дело с несколькими кодировками, а не только однобайтовые строки как substr:

$articleText = mb_substr($articleText,0,500,'UTF-8');

Ответ 3

Похоже, вы нарезаете символ юникода пополам. Используйте mb_substr вместо надежной нумерации строк.

Ответ 4

Альтернативное решение для кодированных строк UTF-8 - это приведет к преобразованию UTF-8 в символы перед разрезанием подстроки.

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

Чтобы вернуть строку articleText в UTF-8, потребуется дополнительная операция:

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

Ответ 5

используйте эту функцию, она сработала для меня

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

Ответ 6

ms_substr() также отлично работает для удаления странных перерывов в цепочке строк, с которыми у меня возникли проблемы после анализа кода html. Проблема не была обработана:

 trim() 

или

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

или

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

Не поймайте.

Ответ 7

Вы пытаетесь вырезать символ юникода. Поэтому я предпочитаю вместо 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 = > Проверить здесь