-1

我像这样在数据库中存储 url 字符串,

'http://www.domain.com'

我怎样才能显示上面的字符串

'www.domain.com'

我需要第一手的正则表达式

4

5 回答 5

4

parse_url()您可以将 url 拆分为各个部分并获取您想要的部分。在您的情况下(寻找host),它将是:

$url = 'http://www.domain.com';
$parts = parse_url($url);
$result = $parts['host'];

与其他已发布的解决方案相比,这有一个很大的优势:它可以使用 https-url、带有 get-parameters 的 url 和/或 url,包括 htaccess-authentication 参数,而无需更改代码。

于 2012-06-18T09:23:10.107 回答
1

您可以使用以下内容:

<?php
str_replace('http://', '', $url);

编辑:

由于您坚持使用正则表达式解决方案,因此这里有一个将 http 和 https 合二为一的解决方案

echo preg_replace( '/^(htt|ht|tt)p\:?\/\//i', '', $url);
于 2012-06-18T09:25:01.280 回答
1
echo substr('http://www.domain.com',7);

if (substr('http://www.domain.com',7) == 'http://' or substr('https://www.domain.com',8) == 'https://')
于 2012-06-18T09:25:44.733 回答
1

在不解析 URL 的情况下修改字符串的通用解决方案(即你应该学会自己能够做这样的事情):

if (stripos($url, 'http://', 0) == 0)
    $url = substr($url, 7);

https://您还可以轻松地为前缀或其他任何内容添加另一个检查:

if (stripos($url, 'https://', 0) == 0)
    $url = substr($url, 8);

使用正则表达式,尽管完全没有必要,因为没有什么需要,你可以像这样:

$url = preg_replace('/^http:\\/\\//', '', $url);

或者直接支持 https:

$url = preg_replace('/^https?:\\/\\//', '', $url);
于 2012-06-18T09:26:31.287 回答
1

只需您可以使用 $url = 'http://www.domain.com';

str_replace('http://', '', $url);

它会准确返回www.domain.com

于 2012-06-18T09:43:56.840 回答