Если вы хотите исключить доменные имена или какой-либо URL, который не имеет «переменной части», может быть решение использовать базу данных с таблицей, содержащей только URL, с правильным индексом и выполнить быстрое сопоставление.
Выяснение того, не должен ли обрабатываться URL, будет только вопросом или выполнение быстрого запроса к этой БД (что обычно означает "URL равно" или "URL начинается с") - - которая может быть такой же простой, как БД SQLite, которая помещается в файл и не требует дополнительного сервера.
Идея PHP-массива имеет один недостаток: когда ваш массив станет больше, ему потребуется все больше и больше памяти только для того, чтобы он был в памяти - и, в один прекрасный день, вам понадобится слишком много памяти и вы попадете memory_limit
; если у вас более нескольких тысяч URL-адресов, это решение может оказаться не лучшим.
Тем не менее, если у вас есть только несколько URL-адресов или шаблонов, идея создания массива PHP, циклического перемещения по нему и сравнения каждого значения с strpos
(для «содержит» или «начинается с») или preg_match
(для регулярных выражений) отлично подойдет - и самый простой в реализации.
Если вы хотите использовать какое-то сложное правило сопоставления, использование какого-либо регулярного выражения, вероятно, будет вашим единственным реальным способом ... Будь то на стороне PHP, с preg_match
или на сервере SQL (MySQL, например, имеет поддержку для регулярных выражений, насколько я знаю, - хотя понятия не имею о производительности, см. 11.4.2. Регулярные выражения для получения дополнительной информации)