如何从PHP中删除http://,www和斜杠?

Joh*_*nUS 39 php url

我需要一个php函数,它从URL生成一个纯域名.因此http://,如果这些部分存在,则必须删除此函数,www/从URL中删除(斜杠)部分.以下是输入和输出示例:输入 - > http://www.google.com/ | 输出 - > google.com
输入 - > http://google.com/ | 输出 - > google.com
输入 - > www.google.com/ | 输出 - > google.com
输入 - > google.com/ | 输出 - > google.com
输入 - > google.com | 输出 - > google.com

我检查了parse_url功能,但没有返回我需要的内容.因为,我是PHP的初学者,对我来说很难.如果您有任何想法,请回答.
Thanx提前.

web*_*ave 66

$input = 'www.google.co.uk/';

// in case scheme relative URI is passed, e.g., //www.google.com/
$input = trim($input, '/');

// If scheme not included, prepend it
if (!preg_match('#^http(s)?://#', $input)) {
    $input = 'http://' . $input;
}

$urlParts = parse_url($input);

// remove www
$domain = preg_replace('/^www\./', '', $urlParts['host']);

echo $domain;

// output: google.co.uk
Run Code Online (Sandbox Code Playgroud)

适用于所有示例输入.

  • @Gordon:问题陈述`必须删除http://,www和/`.任意的子域都不是它的一部分,如果他需要的话,无论如何都不会工作. (3认同)

小智 28

$str = 'http://www.google.com/';
$str = preg_replace('#^https?://#', '', rtrim($str,'/'));
echo $str; // www.google.com
Run Code Online (Sandbox Code Playgroud)


Jak*_*ake 9

有很多方法可以从网址中获取域名我从最短到最长的4个方向发布了.

#1

function urlToDomain($url) {
   return implode(array_slice(explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url)), 0, 1));
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Run Code Online (Sandbox Code Playgroud)

#2

function urlToDomain($url) {
   $domain = explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url));
   return $domain['0'];
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Run Code Online (Sandbox Code Playgroud)

#3

function urlToDomain($url) {
   $domain = preg_replace('/https?:\/\/(www\.)?/', '', $url);
   if ( strpos($domain, '/') !== false ) {
      $explode = explode('/', $domain);
      $domain  = $explode['0'];
   }
   return $domain;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Run Code Online (Sandbox Code Playgroud)

#4

function urlToDomain($url) {
   if ( substr($url, 0, 8) == 'https://' ) {
      $url = substr($url, 8);
   }
   if ( substr($url, 0, 7) == 'http://' ) {
      $url = substr($url, 7);
   }
   if ( substr($url, 0, 4) == 'www.' ) {
      $url = substr($url, 4);
   }
   if ( strpos($url, '/') !== false ) {
      $explode = explode('/', $url);
      $url     = $explode['0'];
   }
   return $url;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Run Code Online (Sandbox Code Playgroud)

上面的所有函数都返回相同的响应: example.com


h00*_*gan 5

尝试此操作,它将删除您想要的内容(http :: //,www和斜杠),但会保留其他子域,例如example.google.com

$host = parse_url('http://www.google.com', PHP_URL_HOST);
$host = preg_replace('/^(www\.)/i', '', $host);
Run Code Online (Sandbox Code Playgroud)