|
0 / 0 / 0
Регистрация: 13.02.2020
Сообщений: 4
|
||||||
Обработка (парсинг) URL для формирования страницы13.02.2020, 15:12. Показов 1012. Ответов 5
Метки нет (Все метки)
Добрый!
Для формирования страницы (вывода данных из БД) сделал, чтобы ссылка разбивалась на составляющее. Вроде работает (php7). Какие могут быть подводные камни?
array(6) { [1]=> string(6) "https:" [2]=> string(8) "tetet.ru" [3]=> string(10) "offer_rent" [4]=> string(4) "auto" [5]=> string(32) "24b01ed8503c474a399fc9e0cf203c69" [6]=> string(12) "?a=1&b=2&c=3" }
0
|
||||||
| 13.02.2020, 15:12 | |
|
Ответы с готовыми решениями:
5
Парсинг страницы для поиска самой ранней успешной сдачи задания Парсинг запроса из URL страницы и помещение его в ассоциативный массив
|
|
1310 / 1002 / 232
Регистрация: 01.10.2018
Сообщений: 3,896
|
|
| 13.02.2020, 15:55 | |
|
Для разбора полного адреса есть parse_url, но для озвученной вами цели выделять протокол и хост не нужно
![]() Добавлено через 1 минуту Их нет в $_SERVER['REQUEST_URI']. Обработка $_SERVER['REQUEST_URI'] выполняется парой строк, если не выделять отдельные GET-параметры (готового $_GET практически всегда достаточно).
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2020
Сообщений: 4
|
||||||
| 13.02.2020, 21:42 [ТС] | ||||||
|
Так наверное лучше. Результат тот-же.
0
|
||||||
|
1310 / 1002 / 232
Регистрация: 01.10.2018
Сообщений: 3,896
|
|
| 13.02.2020, 22:26 | |
|
Циклы не нужны. parse_url по большому счету тоже.
И нужно что-то решать со строкой параметров. Просто размещать ее в последнем элементе массива не очень разумно. Добавлено через 16 минут Кстати, зачем она вам целиком? И вы знаете, что она обычно доступна в $_SERVER['QUERY_STRING']? Или цель сконструировать очередную абстракцию, а не сделать эффективный разбор в рамках конкретного языка и окружения?
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2020
Сообщений: 4
|
||||||
| 14.02.2020, 09:55 [ТС] | ||||||
|
Конечно можно с помощью explode разделить или ещё как, используя разделитель "/" и отделить "хвост" используя "?" как разделитель. Но!
Пользователь может набрать всё, что угодно, а сайт должен работать корректно при любом раскладе (должны работать перенаправление и выдавать соответствующий ответ 200, 404, 301 и т.д.). Стал экспериментировать и функция parse_url однако штука неплохая.
array(4) { [1]=> string(4) "rent" [2]=> string(4) "auto" [3]=> string(56) "//pukp))pup&&&&&C//////24b01ed8503c474a399fc9e0cf203c69/" [0]=> int(3) } Если всё остальное, кроме $url_parse_array[1] и $url_parse_array[2] бред, то можно выдать ответ 404 и перенаправить на /rent/auto/, что позволит выгрузить на страницу контент для соответствующего каталога, а не пустоту или страницу 404. Может пока не идеально, но уже решается часть задач.
0
|
||||||
|
1310 / 1002 / 232
Регистрация: 01.10.2018
Сообщений: 3,896
|
|||
| 14.02.2020, 14:43 | |||
|
Все это делается более просто и логично. А для предотвращения лишних запросов к базе данных при поступлении явно некорректных адресов можно проверять адреса на соответствие допустимым форматам, в частности на наличие только допустимых символов (в этом случае возможно даже не экранировать данные при выполнении запросов на выборку искомых записей) и т.п. Во многих случаях достаточно одной такой проверки на соответствие достаточно общему, но при этом строгому формату. Ну, можно еще добавить высокоприоритетную проверку всех поступающих адресов на возможность общей коррекции при помощи перенаправления, например для избавления от множественных слэшей.
0
|
|||
| 14.02.2020, 14:43 | |
|
Помогаю со студенческими работами здесь
6
Функция формирования url Для инфоблока задать URL страницы назначения ЧПУ или свои URL для каждой страницы Делаю расширение для хрома надо получить URL открытой страницы ! При заливке сайта на хостинг, как прописать url для каждой страницы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|