• Как не дожидаться окончания file_get_contents?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в простейшем варианте - fastcgi_finish_request(), если запросов не очень много
    если много, то только сервер очередей
    Ответ написан
    Комментировать
  • Как не дожидаться окончания file_get_contents?

    SagePtr
    @SagePtr
    Еда - это святое
    В случае FPM - можно использовать fastcgi_finish_request, которая закрывает канал передачи и даёт веб-серверу понять, что от него больше ничего не требуется, остальное скрипт закончит самостоятельно в фоне.
    Ответ написан
    Комментировать
  • Как изменить placeholder при нажатии на переключатель (radio)?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Радиокнопкам добавить data-атрибут, который будет содержать значение для плейсхолдера:

    <input type="radio" name="method" data-placeholder="hello, world!!">
    <input type="radio" name="method" data-placeholder="fuck the world">
    <input type="radio" name="method" data-placeholder="fuck everything">

    Как передать это значение из радиокнопки в инпут:

    const updatePlaceholder = (input, radio) =>
      input.placeholder = radio.dataset.placeholder;
      // или
      // input.setAttribute('placeholder', radio.getAttribute('data-placeholder'));
      // input.attributes.placeholder.value = radio.attributes['data-placeholder'].value;

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

    Обработчик события change можно сделать делегированным:

    document.addEventListener('change', ({ target: t }) => {
      if (t.matches('input[name="method"]')) {
        updatePlaceholder(t.closest('form').querySelector('[name="wallet"]'), t);
      }
    });

    Или назначать каждой радиокнопке индивидуально:

    const onChange = ({ target: t }) =>
      updatePlaceholder(t.form.elements.wallet, t);
    
    for (const form of document.forms) {
      for (const radio of form.elements.method) {
        radio.addEventListener('change', onChange);
      }
    }
    Ответ написан
    2 комментария
  • Как сделать подсчёт совпадающих слов php?

    gscraft
    @gscraft
    Программист, философ
    Вхождения подстроки:
    $names = explode(', ', mb_strtolower('Катя, Марина, Миша')); // обратите внимание на разделитель
    $text = mb_strtolower('Сегодня Катя пошла гулять. Миша и Марина пришли на площадку немного позже, Катя увидев их зразу же подбежала к ним');
    $count = 0;
    foreach ($names as $name) $count += mb_substr_count($text, $name);
    echo $count, PHP_EOL;

    Вхождения слов, с учетом разделителей:
    $names = implode('|', explode(', ', 'Катя, Марина, Миша'));
    $text = 'Сегодня Катя пошла гулять. Миша и Марина пришли на площадку немного позже, Катя увидев их зразу же подбежала к ним';
    $count = preg_match_all("/(^|\W+)($names)(\W+|$)/ui", $text);
    echo $count, PHP_EOL;
    Ответ написан
    6 комментариев
  • Как получить значение переменной PHP?

    Fragster
    @Fragster
    помогло? отметь решением!
    Зависит от опций декодирования json. Если в ассоциативный массив, то $data['attachments'][0]['type'], если в объкет, то $data->attachments[0]->type
    Ответ написан
    Комментировать