Задать вопрос
  • Как исправить баг после обновления php 7 и Yii2?

    @tukreb
    Не нравиться, что php начал бить по рукам за гавно код? :)
    В чём проблема проверять, приходит ли туда массив?
    https://www.php.net/manual/ru/function.is-array.php
    Ответ написан
    5 комментариев
  • Как указать границы блока для preg_match_all?

    @KraydenSharp
    Senior RegExp Developer
    Парсить HTML при помощи регулярных выражений довольно сложно.
    Вот пример регулярного выражения, который вам нужен https://regex101.com/r/Yxki2K/1/ .
    Получилось довольно много всего, но, в случае чего, изменив первые 3 группы в DEFINE можно легко искать другие теги.
    Для того, чтобы понять всё, что там понаписано я оставил комментарии.
    Если кто-то всё-таки будет использовать это, то учтите, что эта регулярка не учитывает вложенные друг в друга элементы, подходящие под селектор ul.ul, ul[class="ul"] и местами не валидный HTML.

    $re = '/(?(DEFINE) #Это блок с объявлением функций
    
        #Этот блок - единственное место, где нужно подставлять значения
        (?<tagName>ul) #Имя тега
        (?<attrName>class) #Атрибут тега
        (?<attrValue>ul) #Значение тега
    
        (?<anyAttrName>[^\s\>\=]*+) #Любое название атрибута
        (?<anyAttrValue>\"[^\"]*+\"|\'[^\']*+\'|\`[^\']*+\`|[^\s\>]*+) #Любое значение атрибута
        (?<anyAttr>(?&anyAttrName)\s*+(?:\=\s*+(?&anyAttrValue)\s*+)?+) #Любой атрибут
    
        #Если нужно найти точное вхождение значения атрибута
        (?<attr>
            (?&attrName)\b\s*+\=\s*+ #Нужное нам название атрибута
            (?: #Поиск точного вхождения
                \"(?&attrValue)\"|
                \'(?&attrValue)\'|
                \`(?&attrValue)\`|
                (?&attrValue)(?=[\s\>])
            )
        )
    
        #Если нужно искать в атрибуте значение как в классах
        (?<attrClass>
            (?&attrName)\b\s*+\=\s*+ #Нужное нам название атрибута
            (?: #Поиск значения как в классах
                \"[^\"]*?\b(?&attrValue)\b[^\"]*+\"|
                \'[^\']*?\b(?&attrValue)\b[^\']*+\'|
                \`[^\`]*?\b(?&attrValue)\b[^\`]*+\`|
                (?&attrValue)(?=[\s\>])
            )
        )
    
        #В зависимости от того, какую из 2 функций выше мы хотим использовать для проверки атрибута
        #Строгое сравнение значения
        (?<tag>\<(?&tagName)\b\s*+(?&anyAttr)*?(?&attr)(?&anyAttr)*?\>) #Использовать так: (?&tag)
        #Поиск значения как в классах
        (?<tagClass>\<(?&tagName)\b\s*+(?&anyAttr)*?(?&attrClass)(?&anyAttr)*?\>) #Использовать так: (?&tagClass)
    
    ) #Этот огровный блок с функциями закончился
    
    (?:[^\<]++(*SKIP)|\G|\C*?(?<parentTag>(?&tagClass)))[^\<]*+\K #После того, как нашли тег сбросили состояние нулевой группы
    (?<openTag>\<li\b\s*+(?&anyAttr)*+\>) #У тега могут быть атрибуты
    (?<innerHTML>\C*?) #Внутреннее содержимое тега
    (?<closeTag>
        \<\/li\b\s*+(?&anyAttr)*+>| #В HTML у закрывающих тегов нет атрибутов, но HTML от этого не ломается
        (?=(?&openTag))| #Теги элементов списка необязательно закрывать согласно документации
        (?=(?<closeParentTag>\<\/ul\b\s*+(?&anyAttr)*+\>)) #Закрытие списка закрывает последний элемент
    )/xuJi';
    $str = '<ul>
        <li class="li anyClass">aaa</li>
        <li>bbb
        <li>ccc
    </ul>
    <p>какой-то текст</p>
    <ul data-class="ul anyClass" class="ul anyClass" data-id=`ul` id=\'ul\' data-data=ul data-empty>
        <li class="li anyClass">aaa</li>
        <li >aaa</li>
        <li>bbb
        <li>ccc
    </ul>
    <p>какой-то текст</p>
    <ul>
        <li class="li anyClass">aaa</li>
        <li>bbb
        <li>ccc
    </ul>
    <p>какой-то текст</p>
    <ul data-class="ul anyClass" class="ul anyClass" data-id=`ul` id=\'ul\' data-data=ul data-empty>
        <li class="li anyClass">aaa</li>
        <li>bbb
        <li>ccc
    </ul>
    <p>какой-то текст</p>
    <ul>
        <li class="li anyClass">aaa</li>
        <li>bbb
        <li>ccc
    </ul>';
    
    preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
    
    // Print the entire match result
    var_dump($matches);
    Ответ написан
    Комментировать
  • Ошибка при сборке контейнера во время установки composer?

    @MikUrrey Автор вопроса
    Решение такое: curl: (23) Failed writing body означает, что программа, вызванная "по трубе", не обработала вывод от curl и упала. Если ваш случай 1 в 1, значит, скорее всего, неправильно сконфигурирован РНР. В php.ini включите display_errors = On и смотрите вывод, РНР сообщит, что не так.
    В моем случае не так было вот что:
    Fatal error: Directive 'track_errors' is no longer available in PHP in Unknown on line 0

    Удалил из php.ini track_errors, и контейнер взлетел.
    Ответ написан
    Комментировать
  • Какую программу установить на сервер для отслеживания изменений в файлах?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    etckeeper для версионированния изменений в каталоге /etc
    git для сайтов...
    Ответ написан
    1 комментарий
  • Почему некорректно работает пагинация при фильтрации?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1)
    WHERE `color` = $_POST['color']
    Вообще дыра, хоть бы проверку какую-нибудь, молчу про подготовленные выражения, которые маст хэв так то...
    2) метод пост не очень подходит для передачи параметров типа фильтр и страницы, для этого обычно используют гет параметры, которые легко интегрировать в линки.
    Ответ написан
    Комментировать
  • Линукс есть ли махонький dns сервер как альтернатива файлу hosts?

    Zoominger
    @Zoominger
    System Integrator
    Есть. BIND называется.
    В принципе, всё, что вы хотите, можно сделать именно им, если как следует раскурить, что такое DNS, его зоны, подзоны, доверие и прочее, и прочее.
    Это будет то же самое, что вы делаете сейчас вручную, но централизованно.
    Ответ написан
    Комментировать
  • Как преобразовать данные в массив?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    3 комментария
  • Как найти сумму значений у элементов вложенных ассоциативных массивов по ключу?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ответ написан
    Комментировать
  • В чём ошибка в коде?

    thoozu
    @thoozu
    Веб-разработчик
    empty() является зарезервированной функцией в PHP, попробуйте изменить название своей функции на другое
    Ответ написан
    Комментировать
  • Стоит ли увеличивать размер сектора у sata SSD и у NVMe M2 до 4К (или даже до 64К)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Производительность не увеличится потому что

    1) размер физического сектора ты не изменишь. Винчестеры с возможностью домашнего низкоуровневого форматирования последний раз видели лет 20 назад на IDE и до него.

    2) размер логического сектора может немного упростить работу с файловой системой, если у тебя огромные файлы за счет уменьшения количества секторов. Но в целом - линейная скорость видимо не поменяется, а рандомный аццесс замедлится. Ну и в любом случае на физическом уровне останется 512б.

    3) Physical Sector size: 512 bytes
    не доверяй этой инфе. Внутри может быть 4к, эмулирующие 512б. Найти винчестеры с 512б сектором производства 2011+ года довольно сложно. Правда это точная инфа для HDD. Может быть в SSD 512байтные сектора вполне еще норма.
    Ответ написан
  • Стоит ли увеличивать размер сектора у sata SSD и у NVMe M2 до 4К (или даже до 64К)?

    Jump
    @Jump Куратор тега Твердотельные накопители
    Системный администратор со стажем.
    Стоит ли увеличивать размер сектора у sata SSD и у NVMe M2 до 4К
    Зависит от ситуации.
    Обычно меньше 4к смысла нет ставить, хотя могут быть и исключения, но не представляю таких ситуаций.

    Увеличит ли это производительность виртуальных машин qcow2 на этих дисках (фс - ext4)?
    Мало информации чтобы сказать. Там от многих факторов зависит.
    Оптимальный размер кластера выставляется в зависимости от нагрузки на диск. Будет информация по нагрузке можно будет сказать.
    Чем больше кластер- тем больше нагрузка приближается к линейной.
    Чем меньше кластер - тем больше нагрузка приближается к случайной.

    Если у вас идут в основном мелкие запросы кластер надо делать поменьше, если идут большие запросы в основном, то побольше.

    Для ОС оптимальное значение 4к.
    Файловая 1с например читает по 8 или 16к. - соответственно и ставим.
    Сервер SQL работает с блоками по 64к - следовательно размер кластера надо ставить не меньше.
    Ответ написан
    Комментировать
  • Какие части linux, нюансы надо знать, чтобы админить nginx?

    solotony
    @solotony
    покоряю пик Балмера
    что бы запустить сервер можно и systemctl не знать - в окошечках потыкать кнопочки.

    но когда произойдет что-то нештатное (а оно произойдет всенепременно) то для восстановления может потребоватья самые разные знания, начиная от сборки ядра, знание всех сетевых утилит, и т.д. и т.п
    Ответ написан
    Комментировать
  • Почему при подключении наушников нужно перезагружать пк что бы они заработали?

    datka
    @datka
    Удалял драйвер realtek и переустанавливал его через диспетчер задач, в чём может быть проблема, и как её решить?

    Заходите в гугл : Модель вашей материнской платы audio driver.
    Переходите на офф. сайт и скачиваете только с офф сайта.

    Через диспетчер задач винда находит стандартные драйвера из своей базы. Они как правило хоть и работают но тех плюшек что дают офф драивера не дают. когда поставите поковыряйтесь в настройках самой программы 99% вы найдете ваши ответы там
    Ответ написан
    Комментировать
  • Как научиться ремонтировать компьютеры?

    hint000
    @hint000
    у админа три руки
    изучить принцип работы ПК на уровне микроконтроллеров
    Начать с того, что в ПК нет микроконтроллеров. Ну так сложилось. Микроконтроллеры есть в промышленной автоматике, на транспорте, в бытовой технике, даже в электрощитах. Но МК нет в ПК, в обычном понимании этих терминов.

    Научиться хорошо паять (а это не так-то просто на современных платах, я вот могу только на уровне "тяп-ляп"). Как уже сказали в комментариях, сейчас неисправные платы заменяют целиком.
    Почитайте: https://habr.com/ru/post/537848/
    Частая проблема - выход из строя электролитических конденсаторов. На материнках сейчас уже не частая, но в целом по электронным блокам - да (блоки питания, мониторы, роутеры и т.д.) Так что можно даже не включая мозг аккуратно перепаивать конденсаторы, и с вероятностью 50% устройство после этого заработает. А в остальных 50% разводить руками, пожимать плечами, хмурить брови и говорить, что ремонт этой неисправности будет дороже, чем новая плата с доставкой. :) Ну ещё изредка бывают сгоревшие предохранители или взорвавшиеся варисторы - это ещё проще, чем с конденсаторами. Раздолбанные USB-разъёмы, переломленные шлейфы в ноутбуках - всё это не требует квалификации.
    Ответ написан
    4 комментария
  • Как подготовить строку запроса для множественного insert?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    $values = implode(',', array_map(
    	function ($line) {
    		return '(' . implode(',', array_fill(0, count($line), '?')) . ')';
    	},
    	$arr_data
    ));
    Ответ написан
    3 комментария
  • Как плюсовать значение в MYSQL?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    mysqli_query($link, "UPDATE `clan_player` SET `rank`=`rank`+1 WHERE `user_id`='{$message}'");
    Ответ написан
    Комментировать
  • Переменная в php обрезается, как пофиксить?

    SagePtr
    @SagePtr
    Еда - это святое
    file_get_html это что-то нестандартное. Вот и смотрите реализацию этой функции.
    Ответ написан
    1 комментарий
  • Как сделать простой php маршрутизатор (роутер)?

    @galaxy
    Ну вот прям на спичках:
    /* index.php */
    $controllerClass = ucfirst($_GET['controller']);
    $method = $_GET['method'];
    
    require_once("controllers/$controllerClass.php");
    $controller = new $controllerClass();
    $controller->$method();


    (никаких проверок ошибок и защит, конечно).
    Обрабатывает url вида /index.php?controller=user&action=edit
    Создает объект класса User (из controllers/User.php) и вызывает метод edit()
    Ответ написан
    Комментировать
  • Как можно достать следующий и предыдущий элемент относительно $array[$i]?

    @Drayde
    function get($action, $i, $array){
    	$result = '';
    
    	if ( $action == 'left' ) {
    		$result = ( $i == 0 ) ? $array[count($array)] : $array[$i--];
    	} else {
    		$result = ( $i == count($array) ) ? $array[0] : $array[$i++];
    	}
    
    	return $result;
    }
    Ответ написан
    9 комментариев