Проверьте, есть ли у URL контент в PHP - PullRequest
2 голосов
/ 25 марта 2019

У меня есть файл PHP.В этом файле мне нужно проверить, имеет ли мой URL следующее окончание:

www.example.de/dashboard/2/

Таким образом, окончание может быть числом 1 - 99+, которое всегда находится в конце URL между двумя слешами.Я не могу использовать $_GET здесь.Если это $_GET, это будет легко:

if ( isset($_GET['ending']) ) :

Так как же я могу сделать это без параметра в URL?Спасибо за вашу помощь!

Ответы [ 5 ]

2 голосов
/ 26 марта 2019
if(preg_match('^\/dashboard\/(\d+)', $_SERVER['REQUEST_URI'])){
    foo();
}

Использование регулярного выражения в запросе uri

1 голос
/ 26 марта 2019

Сначала вам нужно настроить таргетинг этого URL на скрипт - в конфиге веб-сервера.Для nginx и index.php:

try_files $uri @rewrite_location;
location @rewrite_location {
        rewrite ^/(.*) /index.php?link=$1&$args last;
}

Второе - вам нужно проанализировать URI.В конце $ вы найдете то, что вы хотите

$link_as_array = array_values(array_diff(explode("/", $url), array('')));
$max = count($link_as_array) - 1;
$end = $link_as_array[$max];
1 голос
/ 26 марта 2019

Более динамичный способ - это взорвать и использовать array_filter, чтобы удалить пустые значения, а затем выбрать последний элемент.
Если элемент * 1 совпадает с элементом, то мы знаем, что это число.
(Возвращение от explode - это строки, поэтому мы не можем использовать is_int)

$url = "http://www.example.de/dashboard/2/";
$parts = array_filter(explode("/", $url));
$ending = end($parts);
if($ending*1 == $ending) echo $ending; //2
1 голос
/ 26 марта 2019

Вы можете использовать parse_url и explode:

$url = 'http://www.example.de/dashboard/2/';

$path = parse_url($url, PHP_URL_PATH); // '/dashboard/2/'
$parts = explode('/', $path);          // ['', 'dashboard', '2', '']
$section = $parts[1];                  // 'dashboard'
$ending = $parts[2];                   // '2'

Демо: https://3v4l.org/dv6Cn

Вы также можете использовать Перезапись URL (это для веб-сервера на основе Apache, но вы можете найти симуляционные ресурсы для nginx или любых других веб-серверов, если это необходимо).

0 голосов
/ 26 марта 2019

Я бы так подумал.Если URL-адрес всегда одинаковый или в одном и том же формате, я сделаю следующее:

  1. Проверьте приблизительный URL-адрес.
  2. Разделите URL-адрес на части.
  3. Найдите, есть ли часть, которую я ищу.
  4. Извлеките номер.
<?php
  $url = "http://www.example.de/dashboard/2/";
  if (strpos($url, "www.example.de/dashboard") === 7 or strpos($url, "www.example.de/dashboard") === 8) {
    $urlParts = explode("/", $url);
    if (isset($urlParts[4]) && isNumeric($urlParts[4]))
      echo "Yes! It is {$urlParts[4]}.";
  }
?>

strpos с 7 и 8 предназначен для URLс http:// или https://.

Приведенное выше даст вам вывод в виде числовой части, если она установлена.Я надеюсь, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...