Я получаю строку UTF-8 из db и пытаюсь повторить ее первый символ:
$ title = $ model-> title; echo $ title [0];
Я получаю:
Что не так? Благодаря!
Вам нужно рассмотреть несколько вещей:
НТН
$first_char = mb_substr($title, 0, 1);
Вам нужно использовать многобайтовые строковые функции PHP для правильной обработки строк Unicode:
http://www.php.net/manual/en/ref.mbstring.php
http://www.php.net/manual/en/function.mb-substr.php
Вам также необходимо указать кодировку символов в <head>
вашего HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
или:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" />
Как уже упоминалось в других вопросах, с PHP, при попытке получить подстроку, он не понимает многобайтовых символов (например, с UTF8).
В других ответах не упоминается, что вы должны намекать на кодировку, которую вы хотели бы использовать для mb_substr
Так, например, я использую это:
mb_substr( "Sunday", 0, 1,'UTF8'); // Returns S mb_substr( "воскресенье", 0, 1,'UTF8'); // Returns в
Строки PHP не понимают многобайтовые строки по умолчанию, такой массив, как индексирование, будет прерывать первый байт, и если это не будет в диапазоне ascii, вы получите этот результат.
Используйте метод mb_substr .