![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| aleks357 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 29.6.2011 Репутация: нет Всего: нет |
Как из строки 32 символа получить 31 символ?
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
substr || mb_substr
-------------------- Amazing |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 13 Всего: 78 |
-------------------- Ll 2 |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Guedda, можно намного проще
-------------------- Amazing |
|||
|
||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: 9 Всего: 11 |
Для колекции:
-------------------- 2b || !2b |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Shogun, попробуй сначало
-------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Если речь идет о символах - то mb_substr.
Если о байтах - substr. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
http://www.php.ru/manual/function.substr.html
http://www.php.ru/manual/function.mb-substr.html что-то я не увидел упоминание о байтах. -------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Ну документация кривовата, в PHP не редкость
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
на документацию нечего грешить.
substr - для однобитных кодировок mb_substr - для многобитных -------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
MoLeX, где это написано в документации по substr? Точную цитату со страницы http://php.net/manual/en/function.substr.php
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
будем вспоминать сотворение мира? сначала в PHP были однобайтовые кодировки, и поэтому нечего более substr() не требовалось. Затем сообщество захотелось большего, но проблема возникла тут же. В итоге появился mb_substr Точная цитата будет с другой страницы:
-------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Да кака разница, какие причины?
В любом случае в документации substr ошибка. И в любом случае может потребоваться получать байты с UTF-8 стрки(например при разбивке пакетов). И это будут байты, а не символы. Спорить то зачем? |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
где ошибка? в чем она?
-------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Заменить "символ" на "байт"
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
так это не ошибка. во времена однобайтовых кодировок символ == байт
-------------------- Amazing |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
MoLeX, "символов" написано не где-то в http://web.archive.org/web/19990507233406/...ion.substr.php3, а сегодня в 2011 году.
|
|||
|
||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: 9 Всего: 11 |
Пробовал, с однобайтными кодировками работает нормально. Absinthe, MoLeX прав. -------------------- 2b || !2b |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Shogun, обоснуй.
Я говорю, что substr работает с байтами. Он говорит, что с символами. P.S. Пока что примеры кода с доказательством были с моей стороны. Это сообщение отредактировал(а) Absinthe - 1.7.2011, 16:12 |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Absinthe, все понял про что ты говорил. Пардон)
-------------------- Amazing |
|||
|
||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: 9 Всего: 11 |
Она не работает с байтами а просто не умеет правильно юзать utf-8 символы которые состоят из 2 байт, поэтому он и принимает эти 2 байта как 2 символа, а в mb_* их обьядиняют в один. mb_substr ничто иное как более новая версия substr. Раньше для такой работы нужно было юзать substr и остальные функции для работы с текстом в паре с utf8_decode/utf8_encode. -------------------- 2b || !2b |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |