Задать вопрос
Ответы пользователя по тегу PHP
  • Как скачать файл на сервер по ссылке без расширения?

    @rPman
    При переходе по указанной ссылке видео в браузере не качается, а идет переход на страницу с youtube роликом, но по 'счастливой оплошности' разработчика этого сайта идентификатор youtube ролика размещен прямо в ссылке:
    presaver.com/youtube/qU5A0MLHtyE/download/22?title=treiler2023

    (видно что сайт - рекламная пустышка, контента в нем нет, все полезное содержимое размещено в ссылке, загрузки видео не происходит, скорее всего сломалось что то)

    Это значит, выделяешь из ссылки этот код (например с помощью регулярных выражений метод preg_match или с помощью комбинации parse_url выделив путь с помощью PHP_URL_PATH и explode, разбив путь по '/'), и запускаешь утилиту
    yt-dlp "https://www.youtube.com/watch?v=qU5A0MLHtyE" -f код_формата

    если запустить с ключом -F то будет выведен список доступных форматов и их кодов, при наличии ffmpeg в можно будет объединять аудио и видео потоки

    все это запускать из php с помощью `обратных ковычек` либо вот список вариантов

    p.s. yt-dlp рекомендую ставить с помощью pip, там обновляется оперативнее чем тот что ставится из репозитария ubuntu и других.
    Ответ написан
  • Как получить доступ к контенту iframe?

    @rPman
    На javascript с правами вебсайта ты этого не сможешь сделать, браузер не дает доступ к сторонним доменам в iframe, за исключением доменов-потомков (типа твой domain.ru а iframe - zzz.domain.ru, такой вариант доступ имеет), потому что там сайт открывается с куками пользователя, т.е. можно было бы открывать критичные сайты в iframe и собирать доступы к ним нахяляву.

    Доступ к iframe в браузере имеют плагины и скрипты, запущенные из консоли (плюс все что управляется из selenium).

    Так же возможен свой кастомный браузер на базе какого-нибудь webkit (там доступ к контенту прямой без ограничений), но что то мне говорит что ни плагины ни свой браузер тебе не подходит.

    p.s. универсально, а точнее если со стороны сайта, публикуемого в iframe, идет борьба с этим, у тебя нет возможности узнать что там отображается.

    Но если специально никто не следит, то можно поднять на своем сервере прокси, который будет заворачивать в твой домен указанный (например сайт domain.ru в iframe - yoyo.com, а ты создаешь yoyo-com.domain.ru как копию yoyo.com и открываешь уже этот сайт в iframe, доступ будет с твоими куки (а не куки пользователя).

    Особого смысла в таком действии нет, как и нет смысла проверять, что же там открылось в iframe.
    Ответ написан
  • Как правильно лоигровать ошибки php?

    @rPman
    Не получится, синтаксические ошибки не отловить, так как они появляются до запуска скрипта на выполнение.

    Но если перед запуском приложения выполнить php с ключом -l (--syntax-check) то приложение не будет запущено а только пройдет проверка на ошибки и при наличии она будет выведена, ее можно прочитать
    exec('php --syntax-check main.php',$error_str);

    p.s. если исходные тексты у вас не генерируются в процессе работы программы, синтаксическую проверку лучше проводить заранее однократно, а не в процессе работы всего приложения.
    Ответ написан
  • В чем причина странного поведения PHP?

    @rPman
    Профилировать вам нужно ваш код, и не только работу с базой данных, там как раз нагрузка была бы.
    Самое простое, чего может оказаться достаточно чтобы локализовать проблему:
    * если используется cgi способ запуска php (обычно если это fastcgi/phpfpm) то все процессы php будут видны как обычные процессы (top/atop) а подробности по каждому можно посмотреть в /proc/$pid/{environ и cmdline} будет видно какой php работает и какой там запрос
    * если используется apache module, то ставишь apachetop

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

    Конечно используй php profiler, любой на выбор, считай это продвинутый логер всего что запускается и как долго работает и сколько памяти потребляет.

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

    @rPman
    Первая ссылка в интернете про это.

    Коротко - нельзя, в приложении должны быть прописаны intent android.intent.action.VIEW и android.intent.category.BROWSABLE (т.е. приложение должно разрешать себя открывать из браузера)

    Как альтернатива, выдавай ссылки на google play, если приложение установлено, там будет кнопка Открыть иначе Установить типа так market://details?id=package_name
    Ответ написан
    Комментировать
  • Как разобраться с разной кодировкой строк и сконвертировать их в utf8?

    @rPman
    Не мучайся, используй утилиту enca (есть в репозитариях любого linux), если хочется сложнее, полистай эту тему к примеру, там и в комментариях накидали идей
    Ответ написан
  • Какую команду писать в Visual Studio Code чтобы он проверял файл на ошибки командой php-cs-fixer?

    @rPman
    Готового расширения не нашел но есть пример того как такое сделать
    https://stackoverflow.com/questions/53585737/vscod...
    Ответ написан
    Комментировать
  • Какой библиотекой редактировать, заполнять шаблон pdf на php?

    @rPman
    откуда вы беретесь? кто вам дает такие упоротые задания?
    Как генерировать PDF документы из шаблонов?
    Pdf - худший формат для данной задачи.

    На php не густо библиотек по работе с pdf, они обычно ориентированы на чтение но не на редактирование. А читать документ в одном формате а генерировать из него другой промежуточный (обычно это html) это очень плохая идея.

    Настоятельно рекомендую изменить данные момент в вашем бизнес-процессе, и использовать в качестве шаблона какой-либо открытый офисный формат типа open document или по старинке html

    p.s. для других языков можно найти библиотеки, позволяющие ограниченно редактировать pdf созданный особым образом... иначе только как картинка
    Ответ написан
    Комментировать
  • Стоит ли писать алгоритмы на PHP?

    @rPman
    Благодаря добавлению почти нормальных классов и некоторой типизации, php стал вполне неплохим языком программирования.

    С точки зрения изучения алгоритмов, этого более чем достаточно.

    Но! язык это не главное для разработчика, нужны еще доступные библиотеки и инструменты разработчика (ide, отладчик, профилировщик, помощник с рефакторингом и т.п.) вот тут у php не так заоблачно (но все еще хорошо, если речь идет о разработке приложений web backend или к примеру скриптов автоматизации).

    Канонически для изучения именно программирования с прицелом на работу, лучше выбирать что то из c++/java/python может c# (точнее весь .net) но с оговорками.

    c++ благодаря последним (десятилетие) стандартам стал на столько удобным и простым (особенно если не стрелять себе в ногу извращениями) при высокой скорости работы приложений, огромной базой инструментов, что его можно выбирать первым (но не главным) языком, особенно если не учить его углубленно... используя знания о нем как базис, другие языки изучать будет значительно проще. но GUI приложения писать на c++ грустно.

    python - как язык может чем то не нравиться, но у него самое большое покрытие библиотеками по задачам работы с данными, с точки зрения полезности его нельзя не упомянуть.

    java - учит строгости, даст полезную базу для изучения,.. кто то поставил бы его на первое место новичкам и не только... но после него 'опускаться' до c++ будет сложно, и больших скоростей как и у python от него не жди

    Не выбирай первым языком всякие javascript (они испортят тебя как программиста) или go/rust (от них можно получить разочарование при поиске работы).
    Ответ написан
  • Как генерировать PDF документы из шаблонов?

    @rPman
    Pdf - худший формат для данной задачи.

    На php не густо библиотек по работе с pdf, они обычно ориентированы на чтение но не на редактирование. А читать документ в одном формате а генерировать из него другой промежуточный (обычно это html) это очень плохая идея.

    Настоятельно рекомендую изменить данные момент в вашем бизнес-процессе, и использовать в качестве шаблона какой-либо открытый офисный формат типа open document или по старинке html
    Ответ написан
    Комментировать
  • Как сгенерировать изображение чека из данных?

    @rPman
    Продумай вариант генерации изображения на стороне клиента средствами браузера, т.е. штатно. Ты генерируешь html на php, а браузер отображает и по ctrl+p позволяет его пользователю распечатать...

    в довесок скопировать составляющие как текст и вообще это удобнее.
    Ответ написан
    1 комментарий
  • Почему запись в файл добавляется в конец?

    @rPman
    Для позиционирования в файле нужно пользоваться fseek а для получения ftell.

    fgets смещает указатель на следующую строку, значит fwrite будет ее затирать. Значит если у тебя была последняя строка - значит указатель будет в конце файла.

    Теперь о главном - замена строки в текстовом файле нормально будет работать только если размер этой строки совпадает с прошлой, иначе при меньшем размере новой строки в файле останется мусор от прошлой, а при большем - будут затерты следующие строки. Т.е. понадобится сдвигать содержимое всего файла после текущей позиции или полностью перезаписывать весь файл, причем если оперативной памяти хватает то это легко - загрузил построчно file, изменил нужную строку в массиве, и сохранил с помощью к примеру implode+file_put_contents или циклом по массиву и fputs.

    Именно по этой причине текстовые форматы данных не подходят для хранения нескольких записей. Допускается по одному файлу на запись, а запись это текстовая строка.

    Благодаря обширному количеству поддержки различной сериализации данных в текстовый формат, и не только (var_export/serialize/json_encode/igbinary), полная перезапись файла все еще используется как способ хранения миниатюрной базы данных в файле, но только потому что код для его использования очень простой, пока не нужно думать о многопоточном доступе к этим данным.

    Настоятельно рекомендуется не изобретать паровоз и пользоваться например sqlite, универсальная функциональная sql база данных, не требующая обслуживания и установки (работает на основе файла без подключения, как библиотека).
    Ответ написан
    5 комментариев
  • Как отправить данные через POST?

    @rPman
    "category": "8",
    попробуй убрать запятую тут, это не считается валидным json, например php json_decode его не распознает
    Ответ написан
    1 комментарий
  • Имеется ли возможность в PHP создать переменную для всех соединений?

    @rPman
    php изначально создавался для запуска короткоживущих приложений, работающих только пока открыто веб-соединение, и чтобы данные шарить между соединениями используют на выбор: семафоры, очереди и общую память (самый простой с точки зрения обслуживания но считается низкоуровневым и немного сложноват для использования), сторонний сервер ...nosql (например memcache/redis/...) или ...sql (рекомендуется так как легко масштабируется), файлы с блокировками (не эффективный быдлокод, но очень прост в использовании)

    Но со временем язык стал на столько крутым что можно целый веб сервер на нем написать, причем асинхронный (например с использованием reactphp), точно так же как делают на nodejs... и вот в этом случае, приложение получается работает постоянно, а значит общая оперативная память и данные можно передавать просто через глобальные/статические/фабрику.
    Ответ написан
    4 комментария
  • Как хранить логи приложения на php?

    @rPman
    Храни в sql базе, так как это временные логи, используй партиционирование, и очень хорошо думай какие индексы ставить
    Ответ написан
  • Как добавить в регулярное выражение кириллицу?

    @rPman
    preg_replace не понимает мультибайтовые кодировки, и воспринимает символы просто как набор байт, соответственно он может найти искомый символ к примеру на пересечении двух символов, где конец первого и начало второго символа случайно совпали с искомым символом (что произойдет с этими двумя символами или всей строкой после можете сами догадаться).

    Я периодически вижу в интернете странные попытки настраивать локаль и использовать модификатор u и говорят даже работает, но документации для этого мне найти не удалось

    Но зато есть штатный механизм работы с кодировками - это расширение Multibyte String, пользуйтесь им и все будет работать как ожидается. В частности использовать нужно mb_ereg_replace
    Ответ написан
    1 комментарий
  • Как получить массив в массиве, в одном запросе?

    @rPman
    Зачем?

    Я надеюсь ты объединяешь в одном запросе данные изначальной таблицы и той из которой собираешь data с помощью inner (left если нужны записи с пустым data) join?

    Реляционные базы данных это про буквально табличное представление данных, не подразумевающее наличие вложенных списков (в некоторых типа oracle есть такие типы но по сути это как бы отдельный запрос к серверу, да достаточно эффективный но запрос).

    Если тебе нужен плохой совет, ты можешь сериализовать данные, собрав строку из них, например с разделителем ',' с помощью GROUP_CONCAT. В этом случае, используя группировку ты исключишь из результата запроса дубликаты (который умножает данные таблицы на данные data, дублируя колонки из таблицы) но потратишь время на конкатенацию на sql сервере и парсинг (для числ да простой) массива из строки на бакэнде.
    Ответ написан
    6 комментариев
  • Как убрать из переменной лишние символы?

    @rPman
    intVal или floatVal автоматически преобразуют число в начале строки, проигнорировав все остальные символы а так же отсутствие числа в принципе (вернет 0).
    Ответ написан
    1 комментарий
  • Как добавить модуль pdo?

    @rPman
    Модули php тесно связаны с конкретной сборкой php, поэтому распространяются вместе и по отдельности на имеют смысла.
    Тот механизм, который ты использовал для установки своей версии php, если не содержит нужного модуля, значит его нет и остаётся только самостоятельная компиляция из исходников, и это очень не тривиальный процесс.

    Выбери другой источник пакетов php, например на launchpad backports
    Ответ написан
  • Почему при ajax запросе на php файл ничего не приходит?

    @rPman
    Echo не умеет выводить массивы, воспользуйся какой-либо сериализацией, json_encode или var_dump или вместо echo используй print_r
    Ответ написан
    Комментировать