Для этого есть простая функция PHP parse_url ().
Вот 3 различных метода, последний из которых наиболее прост, используя функцию parse_url ().
Первое - это простое регулярное выражение.
Второе - это то же регулярное выражение, но с добавлением имен ключей для результирующего массива.
Третий - это использование PHP функции parse_url (), которая намного проще возвращает всю вашу информацию, но действительно перехватывает «/» пути.
[путь] => / getThis
Код:
echo "Attempt 1:\n\n";
$url = "http://my.example.com/getThis";
$pattern = "/(.*?):\/\/(.*?)\/(.*)/"; //need to create this
$result = preg_match($pattern, $url, $matches);
print_r($matches);
echo "\n\nAttempt 2:\n\n";
$url = "http://my.example.com/getThis";
$pattern = "/(?<scheme>.*?):\/\/(?<host>.*?)\/(?<path>.*)/"; //need to create this
$result = preg_match($pattern, $url, $matches);
print_r($matches);
echo "\n\nAttempt 3:\n\n";
$better = parse_url($url);
print_r($better);
Результаты:
Попытка 1:
Array
(
[0] => http://my.example.com/getThis
[1] => http
[2] => my.example.com
[3] => getThis
)
Attempt 2:
Array
(
[0] => http://my.example.com/getThis
[scheme] => http
[1] => http
[host] => my.example.com
[2] => my.example.com
[path] => getThis
[3] => getThis
)
Attempt 3:
Array
(
[scheme] => http
[host] => my.example.com
[path] => /getThis
)
Надеюсь, это поможет ^^