Использование PHP substr () со специальными символами в конце приводит к появлению вопросительных знаков - PullRequest
17 голосов
/ 07 июня 2011

Когда я использую функцию substr () в PHP, я получаю знак вопроса (квадрат со знаком вопроса - в зависимости от браузера) в конце строки, когда этот последний символ был специальным, например, ë или ö и т. д ...

$introtext = html_entity_decode($item->description, ENT_QUOTES, "UTF-8");
$introtext = substr($introtext, 0, 200);

Как мне избежать этого?

Ответы [ 4 ]

43 голосов
/ 07 июня 2011

Если ваша строка имеет многобайтовую кодировку (как UTF-8), вы должны использовать mb_substr, чтобы избежать таких проблем:

$introtext=mb_substr($introtext,0,200);
5 голосов
/ 13 июня 2015

В случае, если кто-то попробовал предыдущие ответы, но это все равно не сработало:

Попробуйте добавить имя Unicode в mb_substr, например:

$introtext = mb_substr($introtext, 0, 200, 'utf-8');
5 голосов
/ 07 июня 2011

Это потому, что substr не работает с многобайтовыми символами. substr, вероятно, вырезает многобайтовый символ «пополам». Вместо этого вы должны использовать mb_substr . Также убедитесь, что ваш файл сохранен в UTF-8.

$introtext = mb_substr($introtext, 0, 200);
4 голосов
/ 07 июня 2011

Использование mb_substr

...