[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: substr + utf8
Snus
Господа, у вас бывало такое, что когда режешь строку фун-ей substr, вылезают вот такие вот забавные символы . А забыл уточнить - кодировка utf8. smile.gif



Спустя 7 минут, 39 секунд (10.02.2011 - 13:06) DedMorozzz написал(а):
юзай mb_* при утф8. Т.е. при много байтных кодировках.

Спустя 2 минуты, 59 секунд (10.02.2011 - 13:09) Snus написал(а):
DedMorozzz
Та не :) тут не в этом дело. Если я делаю отдельный скрипт типа
$string = 'краткое наименование (для документов)';
echo substr($string, 0, 30);

То все работает как надо, а вот в моем скрипте иногда выдает такие знаки. Хотелось бы знать природу откуда они. А уж проблему сам решу ;)

Спустя 3 минуты, 43 секунды (10.02.2011 - 13:13) DedMorozzz написал(а):
Snus, ага и выдаёт твой скрипт "краткое наимено". При кодировек утф-8. Согласись, чуток менее 30 символов. Юзай mb_

Спустя 52 секунды (10.02.2011 - 13:14) linker написал(а):
Для UTF-8 существует расширение mbstring. Сделай нечетное число
echo substr($string, 0, 29);
и получишь свой непонятный символ в конце.

Спустя 7 минут, 30 секунд (10.02.2011 - 13:21) Snus написал(а):
Вообще странное поведение заметил.
Вот скрипт

<?php

$string = 'краткое наименование (для документов)';
$string2 = mb_substr($string, 0, 30);

echo '<p>'.$string.' ('.mb_strlen($string).')</p>';
echo '<p>'.$string2.' ('.mb_strlen($string2).')</p>';

?>


Вот вывод

краткое наименование (для документов) (69)

краткое наимено� (30)


Пересчитайте кол-во символов в каждой строке - показатели врут :)

Спустя 1 минута, 32 секунды (10.02.2011 - 13:23) DedMorozzz написал(а):
А кодировку указать?
В мане же пишутся все параметры. Не просто так они!
$string2 = mb_substr($string, 0, 30,'utf-8');
mb_strlen($string, 'utf-8');



Спустя 1 минута, 22 секунды (10.02.2011 - 13:24) Snus написал(а):
DedMorozzz
Баааалин. Тебе плюс, мне минус. Забыл указать utf8 smile.gif))

Спустя 41 секунда (10.02.2011 - 13:25) DedMorozzz написал(а):
Цитата (glock18)
Не работает код? Берешь мануал, садишься за этот код, проходишь по каждой строчке и пытаешься понять зачем она и что делает. Если находишь функцию, которую ты знаешь не с точностью до каждого параметра и поведения, то идешь в мануал и читаешь про нее. Потом осознаешь что она такое и зачем там. Вот так надо учить php, а не просто копировать примеры из примеров в примеры, в надежде, что эти примеры потом будут работать.

Спустя 1 минута, 52 секунды (10.02.2011 - 13:27) Snus написал(а):
DedMorozzz
Смею заметить, что стадию "учу php" уже прошел лет 5 назад. Людям свойственно ошибаться, вот и все smile.gif

Спустя 1 минута, 29 секунд (10.02.2011 - 13:28) DedMorozzz написал(а):
"Из песни слов не выкинешь". Это полностью его подпись smile.gif

Спустя 15 часов, 14 минут, 38 секунд (11.02.2011 - 04:43) andyp написал(а):
кроме mb есть еще iconv

Спустя 1 месяц, 17 дней, 17 часов, 50 минут, 4 секунды (28.03.2011 - 21:33) alex12060 написал(а):
А чтобы не указывать последний параметр, можно просто указать

mb_internal_encoding('UTF-8');
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.