• Как правильно написать такие регулярки?

    miraage
    @miraage
    Старый прогер
    Ну ребят, вы чего.

    <?php
    
    $data = <<<DOM
    <div class="container">
            <div class="catalog-list">
                <div class="sub">
                    <div class="item"></div>
                </div>
                <div class="item"></div>
                <div class="item"></div>
                <div class="item" data-type="2"></div>
            </div>
        </div>
    DOM;
    
    $xml = new SimpleXMLElement($data);
    
    $catalogListNodes = $xml->xpath('//*[@class="catalog-list"]/*');
    $itemInSubNodes = $xml->xpath('//*[@class="sub"]/*[@class="item"]');
    Ответ написан
    1 комментарий
  • Как сравнить ключи двух разных ассоциативных массивов?

    Думаю верно вас понял
    <?php
    /**
     * Created by PhpStorm.
     * User: alex
     * Date: 08.05.16
     * Time: 17:57
     */
    
    
    $resurses = array("0" => array(
        "id" => "7", "input_ingridient" => "Железная руда", "input_value" => "2000",
        "output_ingridient" => "Сталь", "output_value" => "1600"),
        "1" => array(
            "id" => "5", "input_ingridient" => "Древесина", "input_value" => "1000", "output_ingridient" => "Бревно",
            "output_value" => "600"));
    
    $recipes = array(
        "0" => array(
    
            "id" => "4", "title_recipe" => "Первый рецепт", "1_title_ingridient" => "Сталь",
            "1_value_ingridient" => "200", "2_title_ingridient" => "Название 2", "2_value_ingridient" => "2",
            "3_title_ingridient" => "Название 3",
            "3_value_ingridient" => "3", "4_title_ingridient" => "Название 4", "4_value_ingridient" => "4",
            "5_title_ingridient" => "Название 5",
            "5_value_ingridient" => "5", "6_title_ingridient" => "Название 6", "6_value_ingridient" => "6",
            "7_title_ingridient" => "Название 7",
            "7_value_ingridient" => "7", "8_title_ingridient" => "Название 8", "8_value_ingridient" => "8",
            "9_title_ingridient" => "Название 9",
            "9_value_ingridient" => "9", "10_title_ingridient" => "Название 10", "10_value_ingridient" => "10"),
        "1" => array(
            "id" => "2", "title_recipe" => "Второй рецепт", "1_title_ingridient" => "Название 11",
            "1_value_ingridient" => "234234", "2_title_ingridient" => "Название 12", "2_value_ingridient" => "234234",
            "3_title_ingridient" => "Название 13", "3_value_ingridient" => "434", "4_title_ingridient" => "Название 14",
            "4_value_ingridient" => "43443", "5_title_ingridient" => "Название 15", "5_value_ingridient" => "100",
            "6_title_ingridient" => "Название 6", "6_value_ingridient" => "23423", "7_title_ingridient" => "Название 7",
            "7_value_ingridient" => "234234", "8_title_ingridient" => "Название 8", "8_value_ingridient" => "234324",
            "9_title_ingridient" => "Название 9", "9_value_ingridient" => "43", "10_title_ingridient" => "Название 10",
            "10_value_ingridient" => "4"));
    function resurses($resurses, $recipes)
    {
        foreach ($resurses as $key => $resurse) {
            foreach ($recipes as $recipe) {
                $qty = count($recipe);
                foreach ($recipe as $key_item => $item) {
                    $qty--;
                    if ($resurse['output_ingridient'] == $recipe[$qty . '_title_ingridient']) {
                        $resurses[$key]['input_value'] = $recipe[$qty . '_value_ingridient'] * $resurse['input_value'];
                        for ($i = 1; $i <= 10; $i++) {
    
                            $resurses[$key][$i . '_title_ingridient'] = $recipe[$i . '_title_ingridient'];
                            $resurses[$key][$i . '_value_ingridient'] = $recipe[$i . '_value_ingridient'];
                        }
    
                    }
    
    
                }
            }
    
        }
        return $resurses;
    }
    
    $resurses = resurses($resurses, $recipes);
    
    foreach ($resurses as $a) {
        $qty_res = (count($a) - 6) / 2;
        echo ' <div class="panel panel-default custom-panel">
            <div class="panel-heading">Title recipe</div>
            <div class="panel-body">
                <ul class="list-group res">
                    <li class="list-group-item">' . $a['input_ingridient'] . ' <span class="badge">' . $a['input_value'] . '</span></li>';
    
        for ($i = 1; $i <= $qty_res; $i++) {
    
            echo '<li class="list-group-item custom-list-group-item">' . $a[$i . '_title_ingridient'] .
                ' <span class="badge custom-badge">' . $a[$i . '_value_ingridient'] . '</span></li>';
        }
        echo '  </ul>
    
            </div>
            <div class="panel-footer">Показано количество ингридиентов на одно изготовление.</div>
        </div>';
    }

    233dacf3666b498db9ab339f404b5b5d.png
    Ответ написан
    2 комментария
  • Как работать с CREST api (EVE online)?

    okwinza
    @okwinza
    PHP Developer
    Ок. наконец-то стоящий вопрос.
    1. Во-первых: в названии вопроса у вас стоит CREST, а код вы приводите для работы с апи стороннего сервиса, который сам получает инфу в том числе через CREST. То есть это разные вещи. CREST - официальное RESTful Api евы, а eve-central - сторонний проект со своим апи.
    2. Во-вторых: код в вашем вопросе используется для постоянного приема данных с eve-central. То есть как только что-то обновилось и запушилось в их релей, вы получаете эти данные. Эти данные обновляются в реальном времени. Этот код не предназначен, чтобы получить сразу ВСЕ данные.


    Если хотите сделать что-то похожее на риал-тайм апдейт цен, то прикрутите к вашему скрипту какой-нить WS или Long-polling сервер, например socketo.me На клиенте можно заюзать autobahn.ws/js для прослушивания и отображения данных.

    Дамп базы игры можно найти на офф. форуме. Полезно для конвертации ID в названия, добавления описаний и т.п. Хотя это все можно также делать уже через CREST.

    Либу для работы с CREST можно заюзать отсюда https://github.com/EvELabs/oauth2-eveonline
    Ответ написан
    Комментировать
  • Как работать с CREST api (EVE online)?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    А чего собственно не поняли в API eve-central?
    Конечно соглашусь с Дмитрий Печуркин в том что вся база вам не нужна вообще от слова совсем, темболее что в JSON формате можно дёргать реалтаймово с евыцентрал.

    Единственное что вам нужно это хранить у себя базу соответсвия имён итемов с их ID,
    если собираетесь ещё и по многим системам мониторить то соответствие имём систем с их id.
    Дампы баз итемов и т.д. когда-то выкладывали на офф. wiki, сейчас не знаю, итемы можно вообще взять из дампа самого евецентрала на их гитхабе https://raw.githubusercontent.com/theatrus/eve-cen...

    А API у централа простейшее
    http://api.eve-central.com/api/marketstat/json?typeid=29668&usesystem=30000142&hours=4

    JSON ответ с положением дел плекса за последнии 4-е часа в жите.
    Данные лучше брать за 4-е часа, минимум 2 часа, данные актуальностью менее 2-х часов вы не получите в большинстве случаев хотя скорее всего что вообще не получите.

    Так что ваша задумка с получением данных каждую минуту не реальна из любых источников.
    Ответ написан
    3 комментария
  • Как работать с CREST api (EVE online)?

    DPechurkin
    @DPechurkin
    Веб разработчик
    насколько мне известно, у EVE очень ... очень - очень громадное количество информации.
    И тут твоя первая ошибка, ты хочешь её копировать не имею мощностей для достижения цели.
    Как это можно решить:
    1. разграничивать информацию на отдельные разделы категории и прочее.
    2. отслеживать нужные значения, к примеру не копировать всё себе , а по запросу пользователя тут же подтягивать нужные данные. При толковой реализации пункта 1 у тебя будет довольно шустро всё работать .
    3. попробуй малыми порциями понять какая инфа приходит, нужна ли она вся тебе , у столь масштабной компании должно быть толковое API и там скорее всего нужно правильно запрос делать, тогда и информации может стать в разы меньше, обработка быстрее и т.д.
    Ответ написан
    4 комментария
  • Какие вы знаете программы или сервисы для создания обложек журналов и баннеров?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Нашёл вот еще веб-сервис интересный https://www.canva.com/
    Ответ написан
    Комментировать
  • Как заставить цикл отработать 1 раз, не зависимо от запросов пользователей?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Начнем с того, что Вы постоянно опрашиваете один и тот же урл, стало быть этот код не имеет прямого отношения к запросу конкретного пользователя. Тем более раз Вы хотите отдавать одни и те же данные в течении часа всем пользователям, то Вам нужно сделать следующее:
    1) Опрашивать урл по крону, и его выдачу складывать в кеш
    2) По запросу пользователям отдавать данные из кеша

    Можно решить и без крона, тогда, опять же, в кеше надо хранить результат выдачи опроса урла, плюс таймер последнего такого опроса. И если таймер меньше нужного интервала, отдавать данные из кеша, не производя запроса, иначе произвести запрос, закешировать данные, обновить таймер и отдать результат пользователю.

    Однако, раз опрос долгий, то непредсказуемо тот или иной пользователь будет нарываться на непонятные тормоза. Поэтому, все же, лучше вынести опрос в фоновый процесс и повесить на крон.
    Ответ написан
    Комментировать
  • Как заставить цикл отработать 1 раз, не зависимо от запросов пользователей?

    supervaleha
    @supervaleha
    Web-development
    Солидарен. Цепляйте Cron на каждый час и в нем обращайтесь к скрипту с кодом. Выходит раз в час один раз будет все выполняться.
    Ответ написан
    5 комментариев
  • Как заставить цикл отработать 1 раз, не зависимо от запросов пользователей?

    dima9595
    @dima9595
    Junior PHP
    Может CRON поможет?
    Ответ написан
    Комментировать
  • Как создать такую сетку товаров?

    smidl
    @smidl
    WordPress-разработчик
    Используйте Masonry grid. Вот ваш ответ
    masonry.desandro.com
    Ответ написан
    Комментировать
  • Как переделать или доделать фильтр поиска?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    # Метки времени для группировки. Не забываем про часовой пояс ;)
    $todayTimestamp = strtotime( date( 'd.m.Y' ) ); # Полночь, сегодня
    $tomorrowTimestamp = $todayTimestamp + 86400; # Полночь, завтра
    
    # Фильтруем по хроникам
    if ( !empty( $_POST[ 'chronicles' ] ) ) {
        $chroniclesFilter = $_POST[ 'chronicles' ];
        foreach ( $servers as $i => $server ) {
            $chronicle = !empty( $server[ 'chronicles' ] ) ? $server[ 'chronicles' ] : false;
            if ( $chronicle !== $chroniclesFilter ) {
                unset( $server[ $i ] );
            }
        }
    }
    
    # Фильтруем по рейтингам
    if ( !empty( $_POST[ 'raites' ] ) ) {
        $raitesFilter = $_POST[ 'raites' ];
        foreach ( $servers as $i => $server ) {
            $rate = !empty( $server[ 'raite' ] ) ? $server[ 'raite' ] : false;
            if ( $rate !== $raitesFilter ) {
                unset( $server[ $i ] );
            }
        }
    }
    
    # Формируем группы серверов по дате открытия
    $todayList = [ ];
    $closedList = [ ];
    $openedList = [ ];
    foreach ( $servers as $server ) {
        $isAllow = isset( $server[ 'allow' ] ) ? (bool) $server[ 'allow' ] : false;
        # Только разрешенные сервера
        if ( $isAllow ) {
            $openDate = DateTime::createFromFormat( 'Y-m-d', $server[ 'open_date' ] )->getTimestamp();
            if ( $openDate >= $tomorrowTimestamp ) {
                # Открывается завтра или позже
                $closedList[] = $server;
            } elseif ( $openDate >= $todayTimestamp ) {
                # Открывается сегодня
                $todayList[] = $server;
            } else {
                # Уже открыт
                $openedList[] = $server;
            }
        }
    }
    
    echo '<pre>';
    # Все сервера, которые подходят по условиям
    var_export( $servers );
    # И разбитые по группам
    var_export( $todayList );
    var_export( $closedList );
    var_export( $openedList );
    Ответ написан
  • Как переделать или доделать фильтр поиска?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Зачем вы сразу весь кусок кода пытаетесь отладить. Сначала проверьте свой первый if (($servers[$i]['open_date'] > $date) && ($servers[$i]['allow'] == 1)) блок , а остальное уберите под комментарии. Попробуйте отдалить это блок, и выводящую результат логику снизу. Прям вардампом везде просматривайте что и как приходит. Если все ок, откройте следущий блок и смотрите его. И так далее.
    Ответ написан
    1 комментарий
  • Где можно попрактиковаться в php?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Предложу довольно неожиданный способ. У нас на хекслете реализована игра для программистов, которая позволяет прокачать базовые скиллы по многим языкам. Крутость в том что эта игра с неплохим фаном, потому что код пишется в соперничистве с другим, реальным, игроком https://ru.hexlet.io/games
    Ответ написан
    2 комментария
  • Можно ли использовать скрипты в проекте C#?

    NightmareZ
    @NightmareZ
    Разработчик
    Ответ написан
    Комментировать
  • Как эффективно изучать php?

    e_svirsky
    @e_svirsky
    Web Developer
    Чтобы изучить php - не нужно долго что-то придумывать.
    Напишите свой проект - интернет-магазин (на самописном фреймворке) с корзиной и админкой менеджера и всеми фичами. Шаблон скачайте с инета - благо их миллионы. (Также добавьте аякс к примеру в магазине).
    Напишите эти все велосипеды самостоятельно (роутинг, шаблонизация, MVC-модель) - после этого вы почувствуете силу в коленях, правда небольшую - но почувствуете.
    Если хотите - могу скинуть ссылку на пошаговые таски для этого. Они конечно врядли будут самодостаточны - но работать с ними можно. Я эти таски писал для ученика своего.
    Ответ написан
    5 комментариев
  • Как вырезать уголки у блока div?

    lazalu68
    @lazalu68
    Salmon
    Есть такая фишка - border-corner-shape, правда ее кажется все-таки выпилили из спек. Вот Lea Verou рассказывает о ней. А вот демка тоже от Lea Verou, в коде увидите, как у нее через SVG реализованы эти уголки.

    Вот тут тоже чувак спрашивает как сделать уголки, через border-corner-shape, ему отвечают что этого пока нет в спеках и предлагают рабочие варианты )
    Ответ написан
    Комментировать