substr — Как вырезать часть строки с символом Японии в PHP?

У меня есть строка как: $fullname = 'ワタナベサン';

И некоторый строковый код для вырезания части строки с условием:

if (strlen ( $fullname ) >= 14)
$this->FullName = substr ( $fullname, 0, 10 ) . '...';
else
$this->FullName = $fullname;

Но результат выглядит как неверная строка как: 'ワタナ�...',

0

Решение

substrи все остальные основные строковые функции PHP, не являются многобайтовая осведомленность и не может правильно обрабатывать многобайтовые строки. Они корректно работают только со строками ASCII или другими однобайтовыми кодировками. Для корректной работы с многобайтовыми строками в большинстве случаев вам нужно использовать эквивалентные функции в Расширение МБ.

Увидеть Что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом для дополнительной информации. Добро пожаловать в кроличью нору кодировок символов; тебе есть чему поучиться. : О)

0

Другие решения

Вам нужно будет использовать многобайтовые версии строковых функций при работе с японскими символами. использование mb_substr вместо субстра и mb_strlen вместо стрлен.

1

По вопросам рекламы [email protected]