Извлечь конкретную точку URL в PHP - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь получить очень специфическую часть URL-адреса, используя PHP, чтобы позже я мог использовать ее в качестве переменной.

У меня есть URL-адрес:

https://forums.mydomain.com/index.php?/clubs/11-Default-Club

Особая часть, которую я пытаюсь извлечь, - это 11 часть между /clubs/ и -Default-Club битами.

Мне было интересно, что лучшеспособ сделать это был.Я видел примеры, в которых используется синтаксический анализатор с регулярным выражением, но я не могу обернуть его вокруг этого конкретного экземпляра.

Спасибо

Редактировать;это то, что я пробовал до сих пор с помощью запроса разнесения, но, похоже, он дает мне все виды элементов, которых нет в приведенном выше URL:

$url = $_SERVER['REQUEST_URI'];
$url = explode('/', $url);
$url = array_filter($url);
$url = array_merge($url, array());

, который возвращает:

Array ( [0] => index.php?app=core&module=system&controller=widgets&do=getBlock&blockID=plugin_9_bimBlankWidget_dqtr03ssz&pageApp=core&pageModule=clubs&pageController=view&pageArea=header&orientation=horizontal&csrfKey=8e19769b95c733b05439755827a98ac8 )

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018

Я бы предпочел быть явным:

<?php
$url     = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$query   = parse_url($url, PHP_URL_QUERY);
$pattern = '@^/clubs/(\d+)[a-zA-Z-]+$@';
$digits  = preg_match($pattern, $query, $matches)
            ? $matches[1]
            : null;

var_dump($digits);

Вывод:

string(2) "11"
0 голосов
/ 17 декабря 2018

Если эта структура URL является фиксированной для всех URL-адресов вашего сайта, то ниже представлен лучший способ получить ваше значение.

<?php
$url = "https://forums.mydomain.com/index.php?/clubs/11-Default-Club";
$url = explode('/', $url);
$url = array_filter($url);
$end = end($url);
$end_parts = explode('-',$end);
echo $end_parts[0];

Вывод:

11
0 голосов
/ 17 декабря 2018

Если эта структура URL является фиксированной для всех URL-адресов на вашем сайте, и вы хотите получить только целую / цифру / цифру часть URL:

<?php
$url = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$int = (int) filter_var($url, FILTER_SANITIZE_NUMBER_INT);
echo $int;
0 голосов
/ 17 декабря 2018

Если вы ожидаете, что строка с тире (11-Default-Club) будет всегда в конце, вы можете попробовать это:

$url = $_SERVER['REQUEST_URI'];
$urlParts = explode('/', $url);
$string = end($urlParts);
$stringParts = explode('-', $string);
$theNumber = $stringParts[0]; // this will be 11
...