LINUX.ORG.RU
ФорумTalks

PHP — почему оно такое в 2016?

 , , , ,


1

1
<?php
preg_match_all('/.*(дай)/u', 'Маздай', $Positions, PREG_OFFSET_CAPTURE);
print_r($Positions);
?>


Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Маздай
                    [1] => 0
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => дай
                    [1] => 6
                )

        )

)
При этом в доках на официальном сайте:

If this flag is passed, for every occurring match the appendant string offset will also be returned.

String, Карл!

Сочувствую похапе-обезьяне. А, нет, не сочувствую.

inchallah ()
Ответ на: комментарий от h578b1bde

Занёс в цитатник. Никогда ничего более остроумного не видел.

inchallah ()

Хз почему. Видимо «пипл хавает»: 9 из 10 наркоманов выбирают PHP.

outtaspace ★★★ ()
Последнее исправление: outtaspace (всего исправлений: 1)

потому что legacy с самого начала разработки, «МЫ НЕ ЛОМАЕМ ЮЗЕРСПЕЙС». рекомендую ознакомиться с phptherightway.com

Spoofing ★★★★★ ()

Что тебе мешает использовать нормальные языки для веб-разработки? Возьми тот же Python с каким-нибудь фреймоворком. По порогу вхождения не хуже (если сразу не лезть в самые дебри), при этом адекватный язык и адекватный фреймворк (перезапускать всё приложение при каждом запросе - дикость).

KivApple ★★★★★ ()

И что тебе не нравится?

Harald ★★★★★ ()
Ответ на: комментарий от h578b1bde

И что же это такое в строках-то?

Номер байта от начала строки, а ты что подумал?

no-such-file ★★★★★ ()
Ответ на: комментарий от KRoN73

Что тут непонятного?

Непонятно почему к этой фразе нужно скроллить половину комментов десятилетней давности вместо вынесения её в официальную документацию.

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

Непонятно почему к этой фразе нужно скроллить

Ну, она хотя бы в официальной документации есть. А сколько раз я подобное в других языках искал на StackOverflow и т.п. :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Ну, она хотя бы в официальной документации есть

Тому комментарию уже, на минуточку, целых 10 лет, за это время успела пара мажорных циферок поменяться. Вряд ли кто-то будет проецировать информацию оттуда на актуальные версии, особенно если она лежит посреди простыни комментариев. Разумно было бы упомянуть о такой особенности именно в документации.

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

Разумно было бы упомянуть о такой особенности

Это вообще-то самоочевидно. Где в названии preg_match_all префикс mb_? Ты прям как с Луны свалился.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Где в названии preg_match_all префикс mb_?

Тогда другой вопрос: где mb_-аналог? Скоро на дворе 2017 год будет, а нормально работать со строками в UTF-8 без прелюбодеяний с байтами до сих пор нельзя.

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

Вряд ли кто-то будет проецировать информацию оттуда на актуальные версии

Пока обратное не указано — оно верно.

В любом случае ты сейчас демонстрируешь подход [censored]программиста, которого нельзя допускать _ни к какой_ серьёзной системе. Потому как ты не хочешь изучать инструмент, надеясь на магию. С таким подходом ноги будут простреляны многократно хоть в Хаскелле, хоть в Аде.

KRoN73 ★★★★★ ()
Ответ на: комментарий от h578b1bde

нормально работать со строками в UTF-8 без прелюбодеяний с байтами до сих пор нельзя

utf-8 не эффективно для внутреннего представления.

где mb_-аналог?

Конвертни в utf-32 и дели свой offset на 4 сдвигом. Делов на 3 минуты. Нет, надо прийти поныть.

Вообще, зачем тебе нужен этот offset? Захотелось?

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Конвертни в utf-32 и дели свой offset на 4 сдвигом

Опять же ненужные телодвижения и костыли вместо нормального использования инструмента.

Вообще, зачем тебе нужен этот offset?

Чтобы потом с ним работать. Строковыми функциями, да.

h578b1bde ★☆ ()
Ответ на: комментарий от h578b1bde

Ну ты прям как маленький...

Обмазывайся всякими фреймворками

fornlr ★★★★★ ()
Ответ на: комментарий от h578b1bde

Опять же ненужные телодвижения и костыли вместо нормального использования инструмента

Такие телодвижения делают все языки (почти). В пыхе у тебя есть выбор не делать так, если тебе не нужно.

Чтобы потом с ним работать. Строковыми функциями, да

И что тебе мешает? Используй utf-16/32 и работай.

no-such-file ★★★★★ ()

Не переживай, просто ты бездарь. Для операции поиска по подстроке preg_match, да ещё и all используют только лица с глубокими поражениями ЦНС. А потом рассказывают, что похапе жруч и глючен. Гугли mbstring b mb_strpos

r_asian ★☆☆ ()
Ответ на: комментарий от r_asian

Тред-детектор на адекватность. Слежу с интересом, пишу комменты к участникам. )

Sociopsih ★☆ ()
Ответ на: комментарий от no-such-file

И что тебе мешает? Используй utf-16/32 и работай.

Чтобы почувствовать себя крутым хацкером этому человекоподобному жизненно необходимо обосрать язык, которые по мнению кулхацкеров - отстой. Поэтому надо выбрать нетипичный инструмент для странной задачи, прострелить себе ногу и визжать как случка. Вместо того, чтобы прочесть доку, да.

http://cs8.pikabu.ru/post_img/big/2016/11/04/8/1478265154187143567.jpg

r_asian ★☆☆ ()

ого!
ну, можешь попробовать perl

хотя там под некоторым углом тоже адище

reprimand ★★★★★ ()
Ответ на: комментарий от h578b1bde

Зачем ты работаешь со строками на пхп? Делать больше нечего?

deep-purple ★★★★★ ()
Ответ на: комментарий от r_asian

Для операции поиска по подстроке preg_match, да ещё и all используют только лица с глубокими поражениями ЦНС

Обзывание людей и переход на личности лишь из-за упоминания одной стандартной функции, не зная решаемой задачи, выдаёт в тебе непрофессионального тупого бездаря.

А потом рассказывают, что похапе жруч и глючен. Гугли mbstring b mb_strpos

Дурилка, решение моей задачи с помощью регулярки быстрее и эффективнее (в т.ч. и со стороны быстродействия) твоего костыляния с mb_strpos.

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от deep-purple

Зачем ты работаешь со строками на пхп?

А с чем ещё работать на пхп?

h578b1bde ★☆ ()
Ответ на: комментарий от deep-purple

Зачем ты работаешь со строками на пхп? Делать больше нечего?

Точно! Лучше бы ТС сделал бы

fprintf(stderr, "%s\n", memmove(malloc(sizeof("дай")), strstr("Маздай", "дай"), sizeof("дай") - 1);

reprimand ★★★★★ ()
Ответ на: комментарий от h578b1bde

А с чем ещё работать на пхп?

с БД конечно же! подключаешься к mysql и валишь его mysql_query() пачками!

reprimand ★★★★★ ()
Ответ на: комментарий от r_asian

Чтобы почувствовать себя крутым хацкером этому человекоподобному жизненно необходимо обосрать язык, которые по мнению кулхацкеров - отстой

Ох лол. Ты слишком закомплексован.

Вместо того, чтобы прочесть доку, да.

Ну ты-то покажешь где в доке описывается поведение функции при использовании строк из многобайтных символов, правда?

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от no-such-file

И что тебе мешает? Используй utf-16/32 и работай.

Вопрос в том что мешает разработчикам автоматически для внутреннего представления в PHP использовать UTF-16/32 вместо перекладывания ихней проблемы на пользователя. Инструмент должен решать проблему, а не добавлять новых.

h578b1bde ★☆ ()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

поведение функции при использовании строк из многобайтных символов

Почему нормальным людям не нужно писать, что хомяков не кормят цианидами, собачек не сушат в микроволновке, а в функции для однобайтных строк не суют utf-8 с непредсказуемым размером символов?

baka-kun ★★★★★ ()
Ответ на: комментарий от baka-kun

в функции для однобайтных строк не суют utf-8 с непредсказуемым размером символов

Покажи мне аналогичную функцию для многобайтных строк.

h578b1bde ★☆ ()
Ответ на: комментарий от buddhist

utf8-проблемы

Как только мне отсыпят неразрывных пробелов, тире, „кавычек”, арифметических символов вроде ≤, ≥, ≠, ±, ×, греческих букв совместно с кириллицей и прочих вкусностей в виде символов — я начну всерьёз обсуждать проблемы неюникодных кодировок.

h578b1bde ★☆ ()
Ответ на: комментарий от h578b1bde

А, ещё забыл упомянуть ударе́ния, мягкие переносы и нормальный апостроф вместо убогих английских кавычек.

h578b1bde ★☆ ()
Ответ на: комментарий от inchallah

Первый раз вот всеми конечностями за! Хотят жрать гуано, пусть жрут.

dmxrand ()
Ответ на: комментарий от h578b1bde

Покажи мне аналогичную функцию для многобайтных строк.

mb_strpos. Специальную же функцию даже сделали, ну.

Wizard_ ★★★★★ ()
Ответ на: комментарий от h578b1bde

Покажи мне аналогичную функцию для многобайтных строк.

В комментах по твоей же ссылке кто-то написал.

kirk_johnson ★☆ ()
Ответ на: комментарий от h578b1bde

Покажи мне аналогичную функцию для многобайтных строк.

  • «Когда я смотрю в школьный микроскоп на небо, получается всякая фигня»
  • «Используй подходящий инструмент!»
  • «Покажи мне аналогичный микроскоп для неба»

Ну ладно, не нашел прямого аналога. Ладно, не осилил mb_ereg_*.

Но кто тебе мешает по-шамански пройтись один раз по массиву, и заменить смещение в байтах на mb_strlen подстроки?

baka-kun ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.