Юрий
И куча всего тоже
Юрий
Но все живы вроде
Юрий
Вон щас each отвалится, там вообще куча легаси
Golodnyi
а..ну да, я понял, strlen возвращает длинну в байтах, в то время как mb_strlen по сути на 2 умножает, и при работе с бинарными данными код юзающий strlen сломается...не хорошо
Юрий
Поискал по гитхабу - 18,3 миллиона вхождений each
Юрий
Этож сколько легаси
Artem
нет никаких проблем в явном использованиии mb_ для строк, ка кмне кажется. Это не стоит ломания совместимости
Юрий
И в 7.2 его убивают
Golodnyi
Юрий
Artem
each хотя бы можно автоматом найти и поправить, а вот поиском по strlen() ты сразу не сможешь понять есть тут проблема или нет. Надо будет рабираться что именно в коде имеется в виду. Это прям очень ломающее изменение
Golodnyi
первый раз прочел об этой функции)
Юрий
Юрий
Как ты автоматом на форич заменишь?
Golodnyi
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
я даже не понимаю что оно делает
Юрий
Там весь код проверить надо будет как минимум
Artem
а ещё будет проблема с индексацией строк по байтам. Это тоже поменять?
invariance
кто-нибудь объясните, откуда в ларке официальная заплатка
invariance
и почему тупо не переделают фреймворк коробочный
Юрий
Юрий
Юрий
И что, оставлять то поведение какое сейчас?
Юрий
Или вводить новый array?
Юрий
Artem
Юрий
Или полагались на такое поведение
Юрий
Как и описанный тобой пример с индексами строк
Artem
ССЗБ
Golodnyi
Artem
строки всегда были бинарными, изменить это - это сломать вообще всё. Именно поэтому и не стали это делать
Golodnyi
урок на всю жизнь)
Юрий
Юрий
И вот сидишь думаешь заюзать сразу mb или у тебя всегда будет только простой текст не требующий этого
Artem
меня это не парит, например. Работаешь с текстом - mb_, работаешь с байтами - без mb_
Golodnyi
ниче тут думать не надо, всегда юзаешь mb, кроме тех случаев, когда ты ждешь не юникод, а такие ситуации щя редки, в основном тока когда с бинарником работаешь
Юрий
Golodnyi
с юникодом
Artem
не важно что чаще, важно, что и так и так нужно работать
Юрий
Почему тогда явно большая группа должна страдать из-за легаси второй группы
Golodnyi
поэтому mb надо юзать как дефолтный вариант, а без mb как исключение
Artem
я вот чаще с бинарём работаю, точнее, чаще всего мне не важна кодировка потому что я не работаю со строками посимвольно
Golodnyi
потому что те кто работает с бинарниками, у них ПО чуть серьезнее, чем те кто хомпейджи делает)
Golodnyi
Artem
ну сам посуди, так ли часто нужно работать с символами? В основном это обрезание строки до какой-то длины в символах + поиск без учёта регистра / регулярки
Aleserche
вот юникод бы запили нормально, было бы замечательно. А пока страдаем дальше
Golodnyi
часто нужна, поверь
Artem
ну приведи пример
Golodnyi
просто не во всех задачах)
Golodnyi
сокет серверы
Golodnyi
там общаются обычно бинарем
Artem
так я о чём и говорю, зачем там символы, там байтов достаточно
Golodnyi
всякое говно, когда ты читаешь какие нить логи, виндового ПО, который в cp1251 или в чем нить еще более ужасном
Golodnyi
mb_ более востребованные функции, если посчитать их выхов на гитхабе, без mb менее востребованные, но они обычно в более серьезном ПО вызываются
Golodnyi
либо в лютом легаси, когда интернеты с cp1251 были)
Юрий
Про строки. В 7.2 вроде еще пачка новых функций для них - str_begin/str_end и str_ibegin/str_iend соответственно
Юрий
Скоро строковых функций будет больше чем остальных вместе взятых
Golodnyi
Artem
ну ок. У меня нечастые, мне нужно только обрещать строки до нужной длины (и то нечасто) и искать по регуляркам без учёта регистра (ещё более нечасто)
Golodnyi
ну бывает надо найти подстроку, чтоб не юзать более тяжелые регулярки
Golodnyi
да там тыщи вариантов что надо от строковых функций и в тот момент когда ты их вызываешь, тебе надо четко знать, там юникод или нет
Artem
если именно точную подстроку, то с этим и обычный strpos() справится, если кодировка utf-8 или однобайтовая
Golodnyi
не знаю на сколько оно справится, в любом случае, если там юникод, а ты заюзаешь strpos, даже если он сработает верно, ты введешь в заблуждение других программистов, которые решат что источник отдает не юникод и начнет дальше над данными применять не mb функции и тогда точно начнутся проблемы
Николай
а причем тут браузер)
Николай
у всего таймаут есть
Artem
тут я согласен, как уже выше написал - если работа с текстом, то сразу mb_ и всё. И никаких особых неудобств это не доставляет. А если кто ошибся, то ловится это на ревью очень просто
Николай
Golodnyi
Artem
можно наверное даже статический анализ натравить, если в проекте вообще никогда с бинарём не нужно работать
Golodnyi
таймаут есть у всего, подтверждаю)
Николай
ок, попробую ещё раз
Николай
Николай
@fairhypo у консольной команды разве таймаут есть? Это же не браузер вроде? или я ошибаюсь?
Николай
а причем тут браузер)
Николай
у всего таймаут есть
Юрий
Ну вообще есть. php_cli со своим конфигом)