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

    xmoonlight
    @xmoonlight Автор вопроса
    https://sitecoder.blogspot.com
    1. Проверяем по 3 буквы: 1-ая позиция - одинаковая, последующие: звонкие/глухие согласные и парные гласные(а/о,и/е и т.д.) - должны быть на тех же позициях.
    2. Проверка по наибольшей длине совпадения в первых двух третях от общей длины слова.
    Ответ написан
    Комментировать
  • Как работать с побитовыми операциями, с большими числами?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вот тут хороший пример по применению pack/unpack.
    Ответ написан
    Комментировать
  • Openserver подключиться к внешней бд MySQL (MariaDB) используя PHPMyAdmin?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Возможно, если доступен порт удалённой базы во вне.
    Обычно, он привязан только к локалхосту в целях безопасности.
    Как - Вы уже сами написали.
    Ответ написан
  • Как найти похожие ПО ЦВЕТУ товары по изображению?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    https://github.com/jenssegers/imagehash
    https://github.com/xwiz/phash

    Ищите минимальное расстояние Хэмминга и после - уже на них ищите отношения цветов пикселей (RED25%/TOTAL, RED50%/TOTAL, ..., GREEN25%/TOTAL, GREEN50%/TOTAL,....): каждого цветового сегмента одного канала к общему количеству пикселей.
    Цветовой сегмент - это процент по цветовому каналу.
    Самые близкие дроби нужного Вам цвета - это и будет то, что Вам нужно: похожие с конкретным цветом.

    И нужно чтобы степень схожести цветов можно было задавать.
    Ширина диапазонов канала и модульное расстояние между конкретными отношениями цветов (дробями). Т.е. собираете превалирующие цвета в кластер и сравниваете не один цвет внутри диапазона, а сразу несколько (из кластера).

    Уменьшить кол-во цветов: здесь и см. 1-й коммент!
    PS: пока - можно без НС всё сделать.
    Ответ написан
    2 комментария
  • Расстановка недостающих пробелов в тексте. Как сделать корректно?

    xmoonlight
    @xmoonlight Автор вопроса
    https://sitecoder.blogspot.com
    Пока 2 варианта вижу:
    1. Простой - разрыв несуществующих цепочек (окружение по 8-10 символов брать и разделять там, где нужно) и часть правил слитно/раздельно ("НЕ"/"НИ" и т.д.) - сделать регулярками.
    2. Сложный - НС строить и обучать уже по-полной, включая проверку орфографии и разбор предложения по частям речи (+получение структуры предложения и смысла текста).
    Ответ написан
    Комментировать
  • Что лучше, поиск в массиве или несколько условий?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Лучше - идентификатор (и подпись, чтобы не могли подменить идентификатор на клиентской стороне) формы вместе с POST-запросом с привязкой к значениям всех отправляемых полей внутри этой формы и URL.
    ID формы (из POST'а) - как ключ нужного элемента в массиве (нужной формы).
    Ответ написан
    7 комментариев
  • Curl_multi - как измерить скорость каждого потока?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Мне не известно подобных методов доступа к потокам в curl_multi.
    Советую сразу использовать pthreads, если планируете что-то мультипоточное делать.
    Ответ написан
    Комментировать
  • Как уменьшить нагрузку на сайт от PHP кода при парсинге новостных RSS-лент?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Забор новостей - раз в N-минут. Можно по запросам, можно через cron.
    2. После того, как забрали - кэшируем в файл ("сырой" кэш).
    3. Затем - обрабатываем так, как нужно для вывода на сайте и сохраняем тоже в файл ("подготовленный" кэш).
    4. Выводим - всегда из подготовленного файл-кеша (чтобы снизить нагрузку на хостинг).
    Ответ написан
    Комментировать
  • Пример CURL запроса, который не посылает Referer и Origin?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ написан
    Комментировать
  • Какие выбрать платные курсы по изучению php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Никакие.
    Порядок самообучения для любого языка:
    1. Учим базу по официальной документации.
    2. Практикуемся (LOOP: 5-10)
    3. Учим следующий более сложный раздел
    4. Смотрим исходный код лидирующих и актуальных проектов для понимания правильной организации кода (код микрофреймворка для разработки или код простого приложения).
    5. Пробуем сделать похожую структуру кода сами.
    6. GOTO 2
    Ответ написан
    7 комментариев
  • Есть решения по проверке орфографии?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Используйте regex и проверяйте на невалидные цепочки слов и знаков препинания внутри текста перед постингом и нормализуйте токены-разделители.
    2. Проверяйте сами слова на валидные символы (и их цепочки), на ограничение длины и на содержание в стоп-листе.
    источник
    <?php
    $values = array(
        'text???',
        '???text',
        'text???text',
        'text ? ? ? ? ? text'
    );
    
    foreach ($values as $original_value) {
        $value = preg_replace('/([?!.:,;]|\s)\1+/', '$1 ', $original_value);
        echo $original_value . "\n" . $value . "\n\n";
    }
    Результат
    text???
    text? 
    
    ???text
    ? text
    
    text???text
    text? text
    
    text ? ? ? ? ? text
    text ? text

    Вот либа для русского языка: Typograph
    На данный момент типограф умеет...
    Обрабатывать тексты в различных кодировках(требуется iconv).
    Заменять кавычки на ёлочки.
    Склеивать двойные кавычки.
    Заменять знак дефиса или два знака дефиса подряд — на знак длинного тире.
    Заменять знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
    Заменять множество пробелов или табуляций на один пробел.
    Заменять х в выражениях вроде 10x10 на знак умножения.
    Исправлять неправильную расстановку запятых.
    Разносить неправильно расставленные кавычки.
    Вставлять неразрывный пробел после инициалов, сцеплять инициалы.
    Делать неразрывными названия организаций и аббревиатуры форм собственности.
    Делать неразрывными имя собственное и относящееся к нему сокращение.
    Не разделять 2007 г., ставить пробел, если его нет.
    Сцеплять скобки со словами.
    Заменять 1/2 1/4 3/4 на спецсимволы.
    Следить за тем, чтобы предлоги и союзы не находились в конце строки.
    Следить за тем, чтобы частицы бы, ли, же и т.д. не отрывались от предшествующего слова.
    Форматировать русские денежные суммы, расставляя пробелы в нужных местах.
    Заменять от 3-х до 5-и точек подряд на троеточие.
    Притягивать к слову запятые, отделять пробелом от последующего слова.
    Притягивать к слову восклицательный знак.
    Делать замену для +-.
    Обрабатывать вложенные кавычки.
    Притягивание чисел к знаку умножения.
    Запятые до «а» и «но».
    Притягивание «;» к предшествующему слову.
    Убирает лишние знаки: «??» в «?», «!!!!» в «!!!».
    Правильные апострофы в «LO'Лайт».
    Прямая речь.
    Неразрывные IP-адреса.

    Добавлю ещё, что если есть ограничение на количество символов в объявлении - то сразу лучше ограничить количество слов (2 буквы и более) не несущих смысл (союзы, предлоги и т.д.). Тогда текст объявлений будет намного качественнее для ЛЮДЕЙ (и для поисковиков, конечно)!

    Что такое заспамленность в целом (понятия: водность, тошнота текста и др.): тут
    Онлайн анализ текста: здесь

    Т.е. это должно работать сразу, до принятия объявления системой (т.е., обычно, до его публикации).
    Ответ написан
    5 комментариев
  • Чем плохо написание кода функциями?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проблема масштабируемости и расширяемости кода приложения.
    Пока у Вас один тип объектов - можно всё писать и функциями (и хранить всё в массиве).
    Но потом - придётся всё переписывать на классы и т.д.
    Ответ написан
    Комментировать
  • Pecl пакет EvTimer не работает, почему?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Не установилось расширение как нужно.
    В ошибке написано, что класс EvTimer не найден.
    Проверьте в /etc/php7/php.ini и /etc/php7/cli/php.ini что есть строка extension="ev.so" и сам файл ev.so на диске в папке расширений.
    Ev::run(); ниже не забудьте.
    Ответ написан
  • Как сделать сайт отдельно для мобильных устройств?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Создать домен 3-его уровня m.site.com на DNS сервере.
    2. По user-agent делать переадресацию на нужный поддомен.
    Ответ написан
    Комментировать
  • Можно реализовать скрипт по посылке СМС на телефон?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нужно использовать отправку через внешний сервис: SMS-шлюз и его API (в документации будет вся информация по интеграции).
    Каждая отправка SMS, разумеется, тарифицируется.
    Ответ написан
    2 комментария
  • Как защитить приложение от спама запросами?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Если запрос с клиента не поменялся - выдаём результат из переменной JS (на клиенте).
    2. Если отправляют в обход тот же запрос - выдаём кешированный результат на стороне сервера (не выполняя повторный поиск в БД)
    3. Если запросы меняют и отправляют часто - ограничиваем время между соседними запросами и их параллельное количество на сервере: при начале поиска проверяем условие превышения частоты и, если всё нормально, в переменную сессии кол-ва активных запросов прибавляем 1-цу (инкремент), перед выдачей - вычитаем 1-цу (декремент). Если частота превышена - сразу возвращаем пустой результат без поиска. Превышена 3 раза - можно и забанить по IP на часик ;)
    Ответ написан
    4 комментария
  • Как подружить пагинацию и фильтрацию?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Никак не могу придумать, как подружить эти функции.
    Через JS-обработчик и склейку/замену нужного параметра.
    Ответ написан
    Комментировать
  • Как правильно использовать google authenticator при логине?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Расшарили учётку - корректно.
    Но сам факт того, что Вы раздали всем одинаковые данные аутентификации - грандиозный EPIC FAIL!
    Вы сделали HUB, а нужен - ROUTER! Понимаете?
    Посмотрите псевдокод и реализуйте роутер, чтобы иметь контроль каждого пользователя.
    Вот реализация на PHP.
    Ответ написан
    Комментировать
  • Как по ссылке понять, что это сайт интернет-магазин?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если "в лоб": buy, price, cart - любое из слов 33% вероятнсть того, что это - интернет-магазин.
    Ответ написан
    Комментировать
  • Как проще всего и надежно хешировать пароль в PHP 5.3.5?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    тут
    crypt('password', '$6$rounds=150000$PerUserCryptoRandomSalt$')

    $6 - use SHA-512, which has 64-bit operations that reduce the margin of advantage most GPU based attackers have over you as of early 2016.

    $rounds=150000 - set the number of iterations to hundreds of thousands or high tens of thousands of rounds.

    PerUserCryptoRandomSalt - unlike password_hash, you have to do this yourself. You need to generate a unique, cryptographically random salt of 12-24 binary bytes (16 is very reasonable)
    Ответ написан