Задать вопрос
  • Парсер на javascript?

    Что-то такое можно попробовать, если ещё работает.
    https://github.com/christophe77/wordpress-check
  • Как правильно задать запрос UPDATE где название столбца переменная?

    Михаил Смирнов,
    <?php
    // Т.к. мы подставляем переменную $column прямо в SQL код без обработки,
    // то мы обязаны позаботиться о том, чтобы там не было SQL-иньекций
    // Поэтому, мы должны крайне тщательно проверить, соответствует ли наше значение допутимым вариантам
    // Проверяем, что там только 1, 2 или 3, а также проверяем, чтобы там не было вредоносного "продолжения"
    $columnNumber = (int) $id[1];
    if ($columnNumber < 1 || $columnNumber > 3 || strlen($id[1]) > 1) {
        throw new \InvalidArgumentException("Неверный номер поля");
    }
    
    $column = 'count' . $columnNumber;
  • Как правильно задать запрос UPDATE где название столбца переменная?

    Я считаю, что если всё работает и хорошо читается, то не надо усложнять код.
    Ну, можно, например, эти 3 if заменить одним, обработать ситуацию, когда там могут быть не только эти три цифры 1,2,3.
    Можно параметры в запросе сделать именованными, а не просто в виде вопросительных знаков. Вынести объявление переменной $sql_upd наверх, рядом с $sql.
  • Symfony HttpClient и Simple HTML DOM?

    Ну так включите дебаггер, посмотрите, что возвращает getInfo, getHeaders, getContent и т.д.
    Кто-ж знает, что у вас там за прокси, верно ли вы всё настроили. Проанализируйте хедеры, наверняка там что-то есть
  • Странное поведение str_replace() при заменах в HTML?

    JastaFly,
    1. Ничего вам не мешает использовать регулярные выражения для парсинга HTML. Каждый волен делать всё, что взбредёт ему в голову. Я вам даже отличную статью подкину, где описывается мощь регулярных выражений, и то, как с помощью них можно спарсить даже такие языки, как HTML. https://habr.com/ru/articles/171667/
    Дело в том, что HTML - это констекстно-свободный и при этом не регулярный язык. Видите это словосочетание "не регулярный"? Это вам никаких намёков не даёт? В статье показано, как можно, сделав операцию на глаза через задний проход, спарсить HTML регулярками, но зачем оно нам надо? Сделать код абсолютно не читаемым и не подверженным дебаггингу? Если это ваша цель, то смело идите к ней.

    2. Мы очень часто забываем, насколько толерантны браузеры к чтению и отображению невалидного и непривычного нам HTML кода. Дело в том, что HTML - это далеко не красивый XML, в котором существует чёткая и единственно-верная спецификация. HTML - это самый настоящий бардак (как и Javascript... только не бейте меня за это))

    Вот вам буквально парочка примеров HTML:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>Document</title>
    </head>
    <body>
        <select multiple>
            <!-- Не правда ли прекрасно, что значение атрибута value работает без кавычек?-->
            <option value=foo selected>FOO</option>
            <!-- А вот так делают старые любители XHTML -->
            <option value="bar" selected="selected">BAR</option>
            <!-- А что если вот так? ... Да что же это такое происходит?! -->
            <!-- Невалидно, но браузер прекрасно кушает, правда не так, как мы думали -->
            <option value="baz" selected="true">BAZ</option>
            <option value="fuc" selected=false>Ой...</option>
        </select>
        
        <!-- Все картинки работают -->
        <img src="https://placehold.co/20" alt="aaa">
        <img src="https://placehold.co/30" alt="aaa"/>
        <!-- Валидатор сопротивляется, но браузеру плевать -->
        <img src="https://placehold.co/40" alt="aaa"></img>
    
        <!-- Идём дальше -->
        <br /> Тег br закрыт. Само собой, текст находится не внутри br
        
        Точно так же:
        <br> Тег br закрыт. Само собой, текст находится не внутри br
    
        И тут начинается что-то странное:
    
        <div /> Тээк. Div же закрыт. А текст находится внутри Div. Шта?
    
        Спецификация HTML чёткая и понятная. Ничего сильно запоминать не надо.
        Любой новичок справится.
        Так? ... Так?
        
        <input />Этот текст снаружи элемента input
        <input>Этот текст снаружи элемента input. Ошибка, но работает</input>
    
        <div>Этот текст внутри div</div>
        <div />Этот текст внутри div
        
        <!-- Всё валидненько -->
        <p>Этот текст внутри p</p>
        <p>Этот текст внутри p
        <p>Этот текст внутри p</p>
        <!-- Невалидно, но работает в браузере -->
        <p />Невалидно, текст внутри p
        
        И много-много радостей вам парсинг регулярками принесёт...
    
    </body>
    </html>


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

    3. Если ваша цель просто быстренько найти какое-то сочетание символов в HTML коде, то пользуйтесь на здоровье регулярками. Инструмент всегда выбирается под задачу. Но начинающему, как мне кажется, лучше всегда советовать категорично. По типу либо "всегда", либо "никогда". Так ему будет проще, а с нюансами он потом сам разберется. Вот я и посоветовал никогда не использовать регулярки при парсинге HTML.

    P.S. Совсем забыл про решение. При помощи парсера, что вам предложили, выбираете все ссылки, которые хотите проверить, проверяете их атрибут href на вшивость, и заменяете этот атрибут на корректное значение. Потом сохраняете весь DOM. Ктати, вот тут, при проверке конкретной ссылки, если не терпится, можно использовать регулярку, ведь это просто одна строчка урла, без кучи мусора. Но зачем, если тут гораздо проще обойтись без неё?
  • Как добавить элемент в массив по условию JS?

    WbICHA, Как раз первым признаком новичка является желание везде совать недавно изученные reduce вместо давно изученного for. Это ведь не модно, и плевать, что reduce хуже читается, зато можно перед одноклассниками попонтоваться.
    А вот понимание того, что надо всегда по мере возможности упрощать свой код, чтобы все в команде мгновенно могли его прочесть, чтобы баг был виден сразу, вот это есть признак наличия опыта.
    Я в жизни не поверю, что простой цикл for сложнее читается, чем reduce. Это-ж надо выдумать такое )))
  • Как добавить элемент в массив по условию JS?

    WbICHA, Я вам больше скажу. В данном конкретном случае reduce не только сильно ухудшает читаемость кода по отношению к обычному for, но и работать будет медленнее, потому что вызов функции на каждой итерации - не бесплатная операция.
    Усложнять код ради мнимой элегантности - это вредительство
  • Как скачать весь контент с сайта?

    ElezthemDev, Это нормальный html-код. Просто изображения встроены прямо в этот html файл в виде base64. Там есть и тексты и всё остальное
  • Как скачать весь контент с сайта?

    ElezthemDev, Как это нельзя редактировать? Открываете html файл и редактируете, что душе угодно.
  • Symfony каталог товаров с динамичной фильтрацией?

    Кирилл Горелов, Ну, в принципе, да. Хотя я даже и не знал о существовании специального термина для описания такой структуры. Подобный принцип организации данных является, строго говоря, говнокодом, потому что, если у вас данные будут разных типов, то поле value не может полностью соответствовать типу данных вашей характеристики, и вам придётся как-то сериализовать эти данные в строку, чтобы хранить в базе. Однако, т.к. задача у вас - не создавать новых таблиц, то это чуть ли не единственное решение в традиционном SQL
  • Проблемы с mail в php. Что я делаю не так?

    ValdikSS, Вы совершенно правы... Ровно до тех пор, пока соседний пользователь этого хостинга, который, скорей всего, судя по тому, что я здесь читал, обычный shared хостинг, не начнёт рассылать нечто похожее на спам.
  • Проблемы с mail в php. Что я делаю не так?

    ValdikSS, Потому что все ваши письма полетят прямиком в Спам. Почти все современные почтовые сервисы типа того же Gmail и Яндекса по умолчанию крайне подозрительно относятся к новым IP адресам, с которых к ним приходит почта. Я бы сказал даже, что они скорей по умолчанию заблокируют новый источник писем. Ведь спам - это чудовищная проблема современности.
    Поэтому, рассылать письма нужно из доверенного источника (сервиса), который можно использовать как раз через SMTP.
  • Странное поведение str_replace() при заменах в HTML?

    JastaFly,
    Каждый опытный веб-программист знает два непреложных закона:
    1. Если вы используете регулярные выражения для решения проблемы, то у вас теперь две проблемы. ) Это правило шуточное, но в каждой программистской шутке есть громадный кусок горькой правды...
    2. НИКОГДА! не используйте регулярные выражения для парсинга HTML, а используйте специальный парсер. И вот это правило серьёзное, и нарушать его выйдет себе дороже.
  • Проблемы с mail в php. Что я делаю не так?

    2024 год.
    - Не стоит использовать http:// на публичных ресурсах, а только https://
    - Не стоит коммитить пароли и токены доступа в Git
    - Не стоит использовать везде один и тот же простой пароль
    - Не стоит публично критиковать начальство и волшебную спецоперацию
    - Не стоит использовать функцию mail() в PHP, а использовать вместо этого SMTP в PHPMailer
  • Как сделать обтекание текста / блоков с необычной формой?

    Don Puh, Скругления даст вам clip-path. Почему-то мне кажется, что в примере форма заранее подогнана вручную под определенный фиксированный текст, который уже потом просто появляется при помощи анимации. Т.е. сначала анимируется закругленная форма объекта, подгоняется под заранее выбранный текст, а потом этот текст просто появляется.
  • Как скрыть элемент, если он не заполнен?

    Александр Коновалов, Я не рекомендую вам в шаблонах, которые выводят html, придумывать какие-то хитрые конструкции и что-то "упрощать". В файлах, где выводится html всё должно быть максимально читаемо, и тут должно быть как можно меньше запутанного кода.
    Кстати, советую вам использовать альтернативный синтаксис PHP для html-кода без фигурных скобок. Например:

    <?php if (!empty($row['attr-size'])) : ?>
     <li>Размер <?php echo $row['attr-size']; ?>мм</li>
      <li>Назначение <?php echo $row['attr-coating']; ?></li>
    <?php else :?>
    <li>Назначение <?php echo $row['attr-coating']; ?></li>
     <? endif;?>
  • Как правильно смапить PHP класс с Doctrine?

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

    Кстати, обязательно объявляйте сами поля в в классах. Это не JavaScript, так как вы делаете делать в PHP не рекомендуется. Если хотите сократить код, лучше используете constructor property promotion
  • Как сделать у значение по умолчанию для формы?

    Вам совет: всегда считайте клиент врагом сервера, который постоянно хочет сервер обмануть, прислать вредоносные инъекции, навредить и украсть данные. Ведь это весьма близко к реальности.
    Такой образ мыслей сам будет наталкивать вас на верные решения. Например, что все проверки, проводимые на клиенте, всегда нужно дублировать на сервере, и все значения по умолчанию нужно устанавливать именно на сервере.
  • MacBook Air M1 8/256 подойдёт для разработки?

    off, Спасибо! Так и делаем по мере возможности. Правда, не всегда возможно сильно урезать не в ущерб работе.
    Конечно, можно что-то тут и там урезать, затянуть пояс потуже, не обращать внимания на swap, и выживать с этим всем.
    Однако мы - программисты - такие же мастера, как и все остальные мастера. Ноутбук - это наш инструмент, он нам помогает деньги зарабатывать. На инструменте экономить - делать себе же хуже. И вместо того, чтобы следить за состоянием памяти, наскребая по сусекам капли ресурсов, я бы хотел заниматься делом и иметь хоть какой-то запас ресурсов на всякий случай.
    Именно поэтому я рекомендую 16гб минимум. 32 - это тот размер, когда обычному программисту практически вообще не надо думать про память.
    Конечно, если бюджет совсем не позволяет, то можно подумать и об Air 8гб, ведь его потом можно хорошо продать и купить себе что-то мощнее. Но если бюджет позволяет, то экономить тут вредно