• Как убрать пробелы по обе стороны от нужного символа?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Я бы написал как-нибудь так:
    $cleared = implode('|', array_map(
        function ($piece) { return trim($piece); },
        explode('|', $text)
    );
    Ответ написан
    Комментировать
  • Как скопировать запрос из postman в php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    // Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://xxxxx.ru/xxx');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "detailNum=9091901164&loadingGroupId=&locationId=24732&deliveryType=&isFirstLoading=false&sessionId=e8f0eaa4-f75f-4285-bd93-0577bc9924e3&latitude=55.0128&longitude=82.9408&geoCoordsType=Location&__Version=1.9.0.2&__RequestVerificationToken=u2uPi63bnyZQWoJSMKI3qD6bZZEr8J3zxFE4I81MhkCnCjkc7iVp4rx8p65eDSAvrbYu4jP7Uc2YTOQPnaOlaROdBigNs9jc3u12bXzgLJO5Gd3C8DbzJhulscYrb4qE14akNHXSUvzOkeV72z4Nzw2&packetId=-1");
    curl_setopt($ch, CURLOPT_POST, 1);
    
    $headers = array();
    $headers[] = 'Accept: */*';
    $headers[] = 'Accept-Encoding: gzip, deflate, br';
    $headers[] = 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
    $headers[] = 'Cache-Control: no-cache';
    $headers[] = 'Connection: keep-alive';
    $headers[] = 'Content-Length: 402';
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    $headers[] = 'Cookie: current-region-long-lat=%257B%2522Id%2522%253A1518%252C%2522Name%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%2522%252C%2522EmexName%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%2522%252C%2522Longitude%2522%253A82.92043%252C%2522Latitude%2522%253A55.030199%252C%2522AreaId%2522%253A2127%252C%2522AreaName%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%25D0%25B0%25D1%258F%2520%25D0%25BE%25D0%25B1%25D0%25BB%25D0%25B0%25D1%2581%25D1%2582%25D1%258C%2522%252C%2522CountryId%2522%253A3%252C%2522CountryName%2522%253A%2522%25D0%25A0%25D0%25BE%25D1%2581%25D1%2581%25D0%25B8%25D1%258F%2522%257D; best-location=9129; current-location=24732; __RequestVerificationToken=-L-u6zozq7CHXAfsSuxpETbR3-L9QFS9Au4ekdstXNo1H_zVNtK8SICMvNLawsEnKxhONZEL0jV9r5h8LQzRDcyZ3wKiz0ypPcXt17dxGRxUJg4BohliZPG2acGwqBUReWPW7NDvM5ZoiWxoPgqs4g2; NSC_xxx.fnfy.sv=ffffffffc3a07a6345525d5f4f58455e445a4a423652; _ym_uid=1561881082464230690; _ym_d=1561881082; _ym_isad=2; _ym_visorc_18880285=w; _ga=GA1.2.401420290.1561881083; _gid=GA1.2.1767642029.1561881083; isBestLocationDetected=true; current-position=%257B%2522X%2522%253A%252282.9408%2522%252C%2522Y%2522%253A%252255.0128%2522%252C%2522type%2522%253A%2522Location%2522%252C%2522source%2522%253A%2522CurrentLocation%2522%252C%2522fixed%2522%253Afalse%257D; _gat=1; _gat_physTracker=1,current-region-long-lat=%257B%2522Id%2522%253A1518%252C%2522Name%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%2522%252C%2522EmexName%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%2522%252C%2522Longitude%2522%253A82.92043%252C%2522Latitude%2522%253A55.030199%252C%2522AreaId%2522%253A2127%252C%2522AreaName%2522%253A%2522%25D0%259D%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D0%25B8%25D0%25B1%25D0%25B8%25D1%2580%25D1%2581%25D0%25BA%25D0%25B0%25D1%258F%2520%25D0%25BE%25D0%25B1%25D0%25BB%25D0%25B0%25D1%2581%25D1%2582%25D1%258C%2522%252C%2522CountryId%2522%253A3%252C%2522CountryName%2522%253A%2522%25D0%25A0%25D0%25BE%25D1%2581%25D1%2581%25D0%25B8%25D1%258F%2522%257D; best-location=9129; current-location=24732; __RequestVerificationToken=-L-u6zozq7CHXAfsSuxpETbR3-L9QFS9Au4ekdstXNo1H_zVNtK8SICMvNLawsEnKxhONZEL0jV9r5h8LQzRDcyZ3wKiz0ypPcXt17dxGRxUJg4BohliZPG2acGwqBUReWPW7NDvM5ZoiWxoPgqs4g2; NSC_xxx.fnfy.sv=ffffffffc3a07a6345525d5f4f58455e445a4a423652; _ym_uid=1561881082464230690; _ym_d=1561881082; _ym_isad=2; _ym_visorc_18880285=w; _ga=GA1.2.401420290.1561881083; _gid=GA1.2.1767642029.1561881083; isBestLocationDetected=true; current-position=%257B%2522X%2522%253A%252282.9408%2522%252C%2522Y%2522%253A%252255.0128%2522%252C%2522type%2522%253A%2522Location%2522%252C%2522source%2522%253A%2522CurrentLocation%2522%252C%2522fixed%2522%253Afalse%257D; _gat=1; _gat_physTracker=1; current-region-long-lat=%7b%22Id%22%3a1518%2c%22Name%22%3a%22%d0%9d%d0%be%d0%b2%d0%be%d1%81%d0%b8%d0%b1%d0%b8%d1%80%d1%81%d0%ba%22%2c%22EmexName%22%3a%22%d0%9d%d0%be%d0%b2%d0%be%d1%81%d0%b8%d0%b1%d0%b8%d1%80%d1%81%d0%ba%22%2c%22Longitude%22%3a82.920430%2c%22Latitude%22%3a55.030199%2c%22AreaId%22%3a2127%2c%22AreaName%22%3a%22%d0%9d%d0%be%d0%b2%d0%be%d1%81%d0%b8%d0%b1%d0%b8%d1%80%d1%81%d0%ba%d0%b0%d1%8f+%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d1%8c%22%2c%22CountryId%22%3a3%2c%22CountryName%22%3a%22%d0%a0%d0%be%d1%81%d1%81%d0%b8%d1%8f%22%7d; best-location=9129; current-location=9129; __RequestVerificationToken=efWU7upM9OIZJy_CysRzDqI4vE8Wu5s6niost8hyNj_HS6SIrOm3pANufATbRF5lctlq_APKtwVTxYEqf9uHtfgBLq_dgsSZHjI8yqA46_iK4bypVNlA-SX6oCrydcknfA6_t_QpwOgwXPFg9KNxLg2';
    $headers[] = 'Host: xxxx.ru';
    $headers[] = 'Pragma: no-cache';
    $headers[] = 'Referer: https://xxxx.ru/f?detailNum=9091901164&packet=-1';
    $headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0';
    $headers[] = 'X-Requested-With: XMLHttpRequest';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);

    Так попробуйте. Взято отсюда. :)
    Ответ написан
  • Как сделать простейший софверный 3д движок?

    usdglander
    @usdglander
    Yipee-ki-yay
    Вот тут есть вся необходимая математическая база с примерами кода. Книга большая, но если вам очень нужно, то думаю вас это не остановит.
    Ответ написан
    Комментировать
  • Как найти числовой индекс массива?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Возможно вам поможет функция array_values()
    Ответ написан
    Комментировать
  • Как в PHP выбрать случайное значение из массива?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    $index = round(time() / (30 * 60));
    $rand_frases = (13 * $index + 7) % count($frases);
    echo '<h2 style="color:#00C; margin-left:300px">'. $frases[$rand_frases] .'</h2>';
    Ответ написан
    1 комментарий
  • Хорошо ли написан класс БД?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    die('DB ERROR');
    Сразу нет! Класс не должен останавливать приложение, если произошла ошибка. Он должен бросать исключение, а что делать дальше должен решать клиентский код.

    никакой работы с БД не должно быть в модели

    В каком смысле это написано? Где это написано?

    Ухожу с синглтона

    На каждый запрос будете создавать отдельное подключение к БД? Там вообще то есть ограничение на количество открытых.

    Я не заметил особой разницы между работой с mysqli и с вашим классом. Инкапсуляция бинда параметров метод query только? Так унаследуйтесь от класса mysqli и напишите удобный метод для этого.

    И почему вы не берёте какую то готовую обёртку? Благо их написано тысячи!
    Ответ написан
  • Как разделить данные в функции array_column?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Ну как то так
    foreach ($names as $logo => $name) {
        ?><a href="#"><img src="<?= $logo ?>"><?= $name ?></a><?php
    }
    Ответ написан
    Комментировать
  • Как запускать консольную команду дважды в секунду?

    usdglander
    @usdglander
    Yipee-ki-yay
    С такой периодичностью лучше написать скрипт с бесконечным циклом внутри и в нём отсчитывать 500 мс.
    while (true) {
        //Тут пишутся действия, которые необходимо выполнить
    
        usleep(500);
    }

    Только внимательнее следите за памятью. На php очень просто поймать утечку памяти. И вообще он не очень хорошо приспособлен для таких задач, но раз уж в тэгах указан...
    Ответ написан
  • Как запустить массивную задачу на php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Либо
    set_time_limit(0);
    либо запускайте в обход веб-сервера из консоли.
    Ответ написан
    2 комментария
  • Сортировка и вывод из двух массивов - как сделать?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Пишу с тела. Не проверял
    $i = $j = 0;
    while (!empty($Model) || !empty($Item)) {
        if ($element = array_shift($Item)) { ?><div class="element"><?= ++$i ?> <?= $element['name'] ?></div><?php }
        if ($element = array_shift($Item)) { ?><div class="element"><?= ++$i ?> <?= $element['name'] ?></div><?php }
        if ($element = array_shift($Item)) { ?><div class="element"><?= ++$i ?> <?= $element['name'] ?></div><?php }
        if ($spec = array_shift($Model)) { ?><div class="spec"><?= ++j ?><?= $spec['name'] ?></div><?php } 
    }

    Я постарался написать просто чтобы была понятна сама идея. Когда поймёте как это работает, можете добавить циклы для повторяющихся элементов и оформить код.
    Ответ написан
    Комментировать
  • В чем опасность "клиентской" oAuth авторизации?

    usdglander
    @usdglander
    Yipee-ki-yay
    нам на сайт с токеном в хэшэ

    Любой прокси на пути от вас до сайта видит ваш запрос. Администратор этого прокси может запросто выдернуть ваш хеш, аннулировать ваш запрос и повторить от своего имени. Тогда он авторизуется под вашей учётной записью.
    И еще интересно, почему он передается именно в хэшэ? Почему не гет параметром, например?

    Скорее всего традиционно сложилось просто.
    Ответ написан
    4 комментария
  • Как подключить файл из корневой папки?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Ну давайте и я своё решение предложу:
    include './../folder2/b.php';
    Ответ написан
    Комментировать
  • Как можно изменить $this->input->post() в array_change_key_case($this->input->post(),CASE_LOWER) i и использовать $this->input->post()?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    1. Вы пытаетесь результату одной функции присвоить результат другой функции. Так работать не будет.
    2. Думается мне, что input не предоставляет методов изменения запроса, поэтому в вашем случае нужно сделать что то вроде этого:
    $post = array_change_key_case($this->input->post(),CASE_LOWER);

    А далее использовать $post вместо обращения к $this->input->post()
    3. Это Codeigniter?
    Ответ написан
  • Как получить Iframe который подгружается через JS?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Вообще странный вопрос.
    iframe загружается самим браузером без всяких JS, на основании параметра src. То есть Вам, для получения содержимого iframe необходимо достать из него ссылку
    https://123.ru/signin?widgetKey=16452abf721961a1728885bef033f28e&language=RU-RU&iframeId=auth-9e8cjizh-z8hn-7a24-w6cu-19pqe9cz&appId=632
    и загрузить с неё контент.
    Ответ написан
  • Как отдать на скачивание XML?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    header("Content-Disposition: attachment; filename=file.xml");
    Ответ написан
    Комментировать
  • Почему gmmktime и mktime возвращают одно и тоже?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Как вариант: время на сервере настроено вручную и выставлен часовой пояс "Гринвич".
    Ответ написан
    Комментировать
  • Почему replace не сохраняется?

    usdglander
    @usdglander
    Yipee-ki-yay
    Автор вопроса Андрей Никифоров сам ответил себе в комментариях:
    UPDATE `oc_product` SET `image` = REPLACE(`image`, 'к', 'k');
    Ответ написан
    Комментировать
  • Почему всем так нужен Doctrine, если он много не умеет?

    usdglander
    @usdglander
    Yipee-ki-yay
    Практически любая абстракция над чем бы то ни было - это всегда компромисс между скоростью работы и удобством сопровождения. Доктрина как и любая друга абстракция - это выбор в пользу скорости/удобства разработки с отказом от универсальности в запросах. В вашем проекте был сделан именно такой выбор, правильный или нет - не известно, но если проект уже работает и живёт (и приносит прибыль), то вряд ли этот инструмент заменят.

    Почему доктрину многие так восхваляют?

    Ни один профессионал (если он действительно профи) не будет говорить что вот "это круто", а остальное - говно. Ибо он понимает что каждый инструмент имеет свои плюсы и минусы и подходит для своих задач. Умение видеть этот баланс и есть профессионализм.
    Ответ написан
    1 комментарий
  • Странная переменная, PHP/WP. Как сменить тип в число из строки?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Вас не смутило string(6) "14704"?
    14704 - это 5 символов. Значит вначале есть какой то невидимый символ, который не даёт преобразовать число в int. Либо проверяйте что у вас в {{id}}, либо попробуйте перед преобразованием сделать переменной trim.
    Ответ написан
    2 комментария
  • Как вывести данные из связанной таблицы в Laravel?

    usdglander
    @usdglander
    Yipee-ki-yay
    в виде
    foreach ($items as $rubric) {
        $rubric->news->map(function ($post) {
            echo $post->title;
            //Ну и остальные поля новости. Какие они там у вас.
        });
    }
    Ответ написан
    2 комментария