Задать вопрос
  • Как поставить в substr_count конец строки?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    PHP 8+
    str_ends_with()

    PHP < 8

    function endsWith($haystack, $needle) {
        $length = strlen($needle);
        return $length > 0 ? substr($haystack, -$length) === $needle : true;
    }
    Ответ написан
    6 комментариев
  • Как сделать регулярку PHP для удаления определенного текста?

    Stalker_RED
    @Stalker_RED
    Достаточно замены через str_replace
    $newStr = str_replace('https://vk.com/', '', $str);
    Ответ написан
    Комментировать
  • Как переписать данный код для версий PHP ниже 7.4?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если ключи сохранять не требуется, то и вовсе
    $res = array_column($page_data, 'tab');
    Ответ написан
    Комментировать
  • PHP выбрать значение?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    1. создаешь массив объектов(или массивов - как больше нравится) {"name": "Анастасия", "full": "Анастасия", "diminutive": "Настенька", "sex": "ж"}
    2. создаешь массив из Анатолий,Толя,Толик,Толян,Толенька и т.д где ключи это Анатолий, Толя и т.д. , а значения - ссылки на массив 1.

    $fullName = isset($firstNames[$name]) ? $firstNames[$name]->full : $name;

    ну или тоже самое, но хранишь не в массивах, а в таблицах БД
    Ответ написан
    2 комментария
  • Как учитывается активность в GitHub?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. Естественно нет. Гитхаб учитывает коммиты сделанные в гитхаб, а не в какой-то другой репозиторий.

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

    toxa82
    @toxa82
    Xhprof вам в помощь.
    Ответ написан
    Комментировать
  • Как вывести строку по id php ?id=1?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос хороший, но здесь мы упираемся в главную беду пхп - ВСЕ учебники в интернете, и особенно видео - показывают как писать адов говнокод из прошлого века.

    1. Получение значения из адресной строки

    Чтобы получить значение переменной, которую передали в строке запроса (это то что после знака вопроса), надо обратиться к переменной $_GET

    То есть в данном случае можно написать $id = $_GET['id']. Имя получаемой переменной ($id) может быть любым и не обязательно совпадать с переданным значением. А вот в индекс массива $_GET разумеется надо писать именно то имя, которое в адресной строке. То есть если site.com/?id=1 то в $_GET['id'] будет значение 1.

    2. Валидация данных

    Далее очень желательно проверить, что мы в переменной получили то что хотели, а так же что мы вообще хоть что-то получили.

    Сначала надо проверить наличие в массиве $_GET нужного ключа. В данном случае это можно сделать с помощью оператора isset() (хотя вообще она для проверки наличия ключей в массивах не рекомендуется)
    Если для показа информации используем отдельную, специальную страницу, которая только занимается показом данных по айди, то после проверки на существование надо выдать ошибку.

    Затем, поскольку id может быть только целым числом больше нуля, то лучше проверить и это тоже и тоже выдать ошибку.

    3. Соединение с БД.

    в "config.php" должно быть написано не то что там сейчас а вот это (со своими параметрами подключения разумеется)
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");


    4. SQL

    Запрос, который нам нужен, выглядит так:
    SELECT * FROM `product` WHERE id=1

    5. Выполнение запроса в РНР

    Но разумеется вместо 1 надо подставить значение переменной.
    Это самое сложное. Но надо один раз выучить и потом везде применять

    Важно, чтобы данные в БД всегда попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    1. Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    2. Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    3. Привязать переменные к запросу.
    4. Выполнить подготовленный ранее запрос с помощью с помощью execute()
    5. Получить результат запроса через get_result()
    6. и дальше конкретную строку из БД с помощью уже знакомой fetch_assoc


    В коде это будет так
    $sql = "SELECT * FROM `product` WHERE id=?";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();


    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    6. Вывод данных.

    Важно понимать, что в момент вывода данных никакой работы с БД уже быть не должно!
    Должны быть только переменные РНР с уже полученными данными.
    Ответ написан
    1 комментарий
  • Можно ли в форме ссылаться не на php файл, а на функцию из php файла?

    @alekcena
    Нелинейный наставник
    Самое простое.
    При запросе на файл передавайте GET или POST параметр с типом что вы хотите сделать.
    Далее в файле делаете условие по этому параметру.
    Ответ написан
    Комментировать
  • Ошибка php jQuery.ajax POST 500?

    smilingcheater
    @smilingcheater
    Лог ошибок сервера вам религия не позволяет посмотреть?

    после $webhook_url = 'xxx' поставьте ;

    и в строке $queryUrl = webhook_url . $method ; забыли доллар у webhook_url. Так же эту переменную надо прокинуть в эту функцию - она объявлена вне её и внутри недоступна.
    Ответ написан
    Комментировать
  • Чем PHPMailer отличается от обычной mail() функций??

    TemaSM
    @TemaSM
    Fullstack, DevOps, InfSec
    Функция mail() в PHP по сути вызывает встроенную в систему почтовую программу - стандартно, это sendmail в linux (также, возможно использовать qmail, postfix, но для этого надо сначала сконфигурировать PHP через .ini файл).
    Подробнее про Mail в PHP: https://www.php.net/manual/ru/book.mail.php
    И про основную проблему кроссплатформенного использования: https://habr.com/ru/post/26518/

    PHPMailer - это мощная библиотека, реализующая почтовые транспорты, а не использующая sendmail как стандартная mail() функция. Имеет из коробки большое количество возможностей, таких как (в списке представлена лишь малая часть):
    • полная поддержка SMTP, Qmail, POP3, IDN, DKIM;
    • поддержка SSL и TLS;
    • работает на любой win32 и *nix платформе;
    • гибкость отладки;
    • определяемые вручную заголовки писем;
    • совмещение нескольких сообщений и вложений;
    • встроенная поддержка изображений;
    • умеет посылать письма с множественными: адресатами (TO), копиями (CC), BCC и REPLY-TO;
    • многослойные/альтернативные сообщения для клиентов, которые не могут читать HTML письма;
    • поддержка 8 бит, base64, бинарного режима, и пригодного для печати формата;
    • перенос слов (word wrap);
    • сообщения в виде HTML (шаблоны);
    • библиотека проверена на множестве SMTP серверах: Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier;
    • библиотека используется под капотом таких гигантов: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla;

    Подробнее можно прочитать тут:
    https://jino.ru/journal/articles/pochta-phpmailer/
    https://www.sesmikcms.ru/pages/read/ischerpyvajusc...

    Помимо PHPMailer существуют и другие крутые библиотеки, оставляю список для интересующихся:
    Swiftmailer
    (Symfony) Mailer

    Если вы активно пользуетесь функцией mail() при разработке на PHP и до сих пор ещё не сталкивались с проблемами при её использовании на хостингах или на своих собственных серверах без соответствующего правильно настроенного окружения, то mail() вам идеально подходит. А когда столкнётесь с проблемами или захотите иметь больше возможностей из коробки, станут очевидными плюсы PHPMailer и других специализированных библиотек.
    Ответ написан
    1 комментарий
  • Как указать pdo не изменять регистр имен колонок?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А вы уверены, что это PDO меняет регистр, а не сама база делает то, что предписывает SQL стандарт? unquoted identifier регистронезависим. Приводить идентификаторы к единому регистру вполне предписываемое поведение. Правда, по стандарту идентификаторы приводить надо к uppercase.

    Укажите quoted identifier
    SELECT full_name as "fullName" FROM ....
    Ответ написан
    1 комментарий
  • Можно ли менять сортировку данных без запросов к БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    3 комментария
  • На что unset жалуется?

    @D3lphi
    unset() - это не функция, а языковая конструкция. И она не может быть передана в виде аргумента другой функции.
    Ответ написан
    Комментировать
  • Как заставить работать .htaccess, если скрипт скрипт работает благодаря php -S localhost:8000?

    DevMan
    @DevMan
    никак: htaccess – фишка апача.
    можете эмулировать его на пыхе, а если нужен именно он – поднимайте апач или лайтспид.
    Ответ написан
    Комментировать
  • Как выводить через for, если в массиве одна строка, с ключом больше 0?

    Используйте foreach() вместо for():

    foreach ($removed as $value) {
       print_r($value);
    }
    Ответ написан
    Комментировать
  • Где новичку найти OpenSource проекты?

    https://github.com/trending/php
    Открываешь любой из репозиториев, переходишь на вкладку Issues, и вперёд - н̶а̶б̶и̶в̶а̶т̶ь̶ ̶о̶п̶ы̶т̶ ̶н̶а̶ ̶т̶о̶п̶о̶в̶ы̶х̶ ̶O̶p̶e̶n̶ ̶S̶o̶u̶r̶c̶e̶ ̶̶п̶р̶о̶е̶к̶т̶а̶х̶ охреневать от того насколько там всё непонятно, и далеко от ваших представлений об Open Source.

    часто ли доверяют новичкам без опыта?

    Вас никто не спросит кто вы, и какой у вас опыт. Но с вас потребуют соблюдения гайдлайнов при написании кода, покрытие его тестами, документацией, и возможно даже оформлению комитов, ПР и сопроводительного сообщения.

    ИМХО, но контрибьют в нормальные Open Source проекты - это не про получение первого опыта, а скорее про валидацию уже имеющегося, и места для новичков я там не вижу.
    Ответ написан
    1 комментарий
  • Можно ли ставить всегда после открывающихся и перед закрывающимися круглыми скобками пробел?

    DevMan
    @DevMan
    можете хоть несколько ставить.
    или вообще переносить на новую строку/строки.

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

    @Nc_Soft
    Проблема не в картинке, а в тексте str_split()
    Надо использовать https://www.php.net/manual/ru/function.mb-str-split.php

    А также путь к шрифу должен быть абсолютным
    https://www.php.net/manual/ru/function.imagettftext.php

    fontfile
    Путь к шрифту TrueType, который вы хотите использовать.
    В зависимости от того, какая библиотека GD используется в PHP, если fontfile не начинается с символа /, то к имени файла будет добавлено .ttf и библиотека будет пытаться искать это имя файла по определённому библиотекой пути шрифтов.
    Ответ написан
    9 комментариев
  • Как написать текст на изображении по одной букве (gif)?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Не было никакой анимации там никогда, она там не поддерживается в принципе, только с использованием каких-нибудь библиотек можно относительно костыльно слепить несколько сгенерированных отдельных картинок в гифку.
    Ответ написан
    3 комментария
  • Как объединить значения массивов?

    @kostya_vtomske
    Форичем облететь массивы и по ключу значения собрать в кучку.
    Ответ написан
    Комментировать