#php #regex #preg-replace
#php #регулярное выражение #preg-заменить
Вопрос:
Я хочу удалить первую часть URL в PHP. Пример:
http://www.domain.com/sales
http://otherdomain.org/myfolder/seconddir
/directory
должно быть:
/sales
/myfolder/seconddir
/directory
Поскольку URL-адрес динамический, я думаю, мне нужно сделать это с помощью preg replace, но я не знаю как .. И иногда URL-адрес уже удален (см. Последний пример).
Как это сделать?
Комментарии:
1. Откуда берутся эти URL-адреса?
2. Из формы ввода.. Но приведенный ниже метод с parse_url сработал для меня! Спасибо.
3. @user735795: Тогда вы должны принять это (установите флажок рядом с наиболее полезным ответом).
Ответ №1:
Для этого в php есть встроенная функция parse_url.
Со связанного веб-сайта:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Приведенный выше пример выведет:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
Комментарии:
1. Обратите внимание, что это не будет работать для URL-адресов, которые не содержат scheme для ex. www.otherdomain.org/myfolder/seconddir
Ответ №2:
Попробуйте:
<?php
$url = 'http://otherdomain.org/myfolder/seconddir';
$urlParts = parse_url($url);
print_r($urlParts);
И взгляните на:
Ответ №3:
вы могли бы использовать информацию о пути:
<?php
print_r(pathinfo("http://www.domain.com/sales"));
print_r(pathinfo("http://otherdomain.org/myfolder/seconddir"));
print_r(pathinfo("/directory"));
?>
вывод:
Array
(
[dirname] => http://www.domain.com
[basename] => sales
[filename] => sales
)
Array
(
[dirname] => http://otherdomain.org/myfolder
[basename] => seconddir
[filename] => seconddir
)
Array
(
[dirname] => /
[basename] => directory
[filename] => directory
)
удачи!