Рубрика: php

  • Php. DOMDocument. Ошибки при загрузке html5-тегов.

    При загрузке контента при помощи loadHTML в объект DOMDocument Вы, скорее всего получите ошибку разбора данных. О том, как решить проблему — в этой статье. Наиболее простой и безкостыльный, как по мне способ — в примере ниже: $dom = new DOMDocument; libxml_use_internal_errors(true); $dom->loadHTML(‘…’); libxml_clear_errors(); Он позволяет безошибочно загрузить контент с html5-тегами и продолжить работу с […]

  • Php. json_encode. Как отключить кодировку UTF (символы \u) для русского текста?

    По умолчанию метод json_encode переводит все кириллические символы в UTF. В этой статье пример, как сделать так, что в JSON-строке остались русские символы. Решение не сложное и описано в документации к функции json_encode. Нас интересует второй параметр — т.е. настройки работы функции. В нем нужно передать JSON_UNESCAPED_UNICODE, что собственно и означает не переводить символы в […]

  • Yii2. Как добавить в OR несколько условий с LIKE?

    Возможна ситуация, когда нужно делать запрос с LIKE-поиском по нескольким полям, но при этом с условием OR. В этой статье пример реализации на Yii2 данной задачи. Всё, на самом деле, просто. Приведу пример: $query->andFilterWhere([ ‘or’, [‘like’, ‘first_name’, $nameFromQuery], [‘like’, ‘last_name’, $nameFromQuery], [‘like’, ‘middle_name’, $nameFromQuery] ]); Выше привел конструкцию, которая при условной поисковой фразе «Ивано» сгенерирует […]

  • Yii2. Queue. Как установить time_limit (max_execution_time)?

    Работа с очередями позволяет распараллелить некоторые процессы и\или вынести особо время затратные задачи в очередь. В этой статье я раскажу, как изменить лимит времени на выполнение задачи (max_execution_time). Общие принципы работы с yii2-queue я описывал ранее здесь. Первая мысль, что мне пришла, когда я увидел сообщение об ошибке о завершении таска из-за временного лимита — […]

  • Php. Как установить первый день месяца в дате при помощи \DateTime?

    При формировании отчетной формы, к примеру, необходимо установить дату начала равной первому дню текущего месяца. В этой статье — простой пример реализации задачи. Итак, пример очень простой. Мы можем указать нужную нам дату в конструкторе: $dateTime = new \DateTime(‘first day of this month’); echo $dateTime->format(‘jS, F Y’); Или изменить уже существующий экземпляр: $dateTime = new […]

  • Yii2. Как валидировать массив с данными?

    В процессе разработки часто в качестве атрибута может выступать массив с данными, которые также нужно валидировать. В Yii2 есть необходимый валидатор, о котором мы часто забываем. В этой статье — пример работы с валидатором each для валидации элементов массива. Собственно все достаточно просто. И отлично описано в документации. Другими словами — при помощи EachValidator мы […]

  • Php. Как сгенерировать ZIP-архив?

    Сегодня постараемся разобраться с вопросом генерации ZIP-архива средствами php. На авторство решения не претендую — когда столкнулся с задачей — нашел данный работающий пример на stackoverflow . Итак, ниже пример метода, который по массиву входящих файлов генерирует ZIP-архив. Как видно с примера формат входящих данных следующий: $files = [ [‘file_name’ => ‘nameInZip1.pdf’, ‘/path/to/file/1.pdf’], [‘file_name’ => […]

  • Yii2. Telegram API. Как отправить круглое видео (video note)?

    Ещё одна статья в цикле статей с рабочими примерами отправки медиа-файлов в Telegram через API. Сейчас речь пойдет о круглых видео, которые также называют видео-заметками (video-note). В этой и следующих статьях, использую расширение SonkoDmitry\Yii\TelegramBot\Component. За долгое время экстеншн прижился и отлично работает — за что автору огромная благодарность. В актуальной, на момент выхода статьи, версии […]

  • Yii2. Telegram API. Как отправить фото?

    Ещё одна статья в цикле статей с рабочими примерами отправки медиа-файлов в Telegram через API. Сейчас речь пойдет о фото-файлах. В этой и следующих статьях, использую расширение SonkoDmitry\Yii\TelegramBot\Component. За долгое время экстеншн прижился и отлично работает — за что автору огромная благодарность. \Yii::$app->tg->sendPhoto([ ‘chat_id’ => $t[‘telegram_id’] , ‘photo’ => \Yii::getAlias(‘@frontend/web/files/source_file.jpg’), ‘caption’ => ‘Текстовое опсиание фото’ […]

  • Yii2. Telegram API. Как отправить видео?

    Продолжаю небольшой цикл статей с наглядными примерами решения задачи отправки медиа-файлов в Telegram при помощи нативного API. Сейчас речь пойдет о видео-файлах. В этой и следующих статьях, использую расширение SonkoDmitry\Yii\TelegramBot\Component. За долгое время экстеншн прижился и отлично работает — за что автору огромная благодарность. \Yii::$app->tg->sendVideo([ ‘chat_id’ => $t[‘telegram_id’] , ‘video’ => \Yii::getAlias(‘@frontend/web/files/source_file.mp4’), ‘caption’ => $this->sourceMessage[‘message’][‘caption’] […]