Регулярное выражение на доменный адрес (получить протокол и домен первого и/или второго и/или третьго и т.д.) [закрыт]

141
10 марта 2019, 06:50

Нужно получить из https://example.com/same/erere/ вот это https://example.com с помощью регулярного выражения причём не известно какой адрес будет

Answer 1

Вашу задачу не нужно решать регулярками. В PHP есть специальные функции для парсинга URL: http://php.net/manual/en/function.parse-url.php

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>

Выдаст:

array(8) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(8) "hostname"
  ["port"]=>
  int(9090)
  ["user"]=>
  string(8) "username"
  ["pass"]=>
  string(8) "password"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(9) "arg=value"
  ["fragment"]=>
  string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"

Вам же нужен PHP_URL_SCHEME и PHP_URL_HOST

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

Answer 2

Чуть-чуть отредактировал ваш же ответ, добавив к нему распознавание http и https.

Вот собственно и ответ:

preg_match_all('/(http|https):\/\/(.*?)\/', 'https://example.com/same/erere/', $matches);

Также рекомендую regex101 для создания или дебага регулярного выражения.

Answer 3
preg_match_all('/https:\/\/(.*?)\//', 'https://example.com/same/erere/', $matches);
echo "<pre>";
  print_r($matches);
echo "</pre>";
READ ALSO
Преобразовать массив в массив для меню

Преобразовать массив в массив для меню

есть массив данных полученных по Rest API Пытаюсь из этих данных сделать меню, но для этого нужно его преобразовать с учетом вложенности (думаю...

150
Реализация кучи

Реализация кучи

Говорят, что динамическая память в программе выделяется в куче, а локальные переменные - в стекеЕсли с реализаций стека всё вроде бы понятно,...

195
Студия 2017, cmake и boost на remote машине

Студия 2017, cmake и boost на remote машине

Использую студию 2017 и 2 варианта ремоут машин (WSL и VirtualBox(Debian95))

129