我的代码有效,我只是想知道它是不是很糟糕的做法,因为我想是这样。我尝试了所有preg_replace但它似乎没有工作。所以我就是这样写的。
作为一个输入,我期待url
google.com www.google.com http://google.com
或
因此我需要
google.com
我的代码:
$website = trim($website); //removes space characters
$website = trim($website, '/');
$website = trim($website, 'http://');
$website = trim($website, 'www.');
答案 0 :(得分:5)
trim
的工作方式是修剪每个角色(www.
与.w
相同)。
您正在使用preg_replace
的正则表达式查找^(https?://)?(www\.)?
:
$website = preg_replace('~^(https?://)?(www\.)?~i', '', $website);
<强>尸检强>:
^
比赛必须从此后的任何内容开始(确保我们只在比赛开始时才替换)(https?://)?
http
- 文字字符串http
s?
- 可选s
(如果我们使用https
)://
- 文字字符串://
?
- 让整个事情变得可选(www\.)?
www\.
- 文字字符串www.
(您需要将.
转义为\.
,.
表示&#34;任何字符&#34; )?
- 让整个事情变得可选i
- 这是修饰符,i
使整个事情区分大小写(将匹配HTTP和http)答案 1 :(得分:2)
KIS:保持简单。
来自文档:
<?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
)
编辑: PHP Getting Domain Name From Subdomain当你有主人时。
答案 2 :(得分:0)
RegEx的经典用例。此代码段会删除http(s)和www前缀。
$ new_url = preg_replace('/(?:https?://)?(?:www。)?(。*)/?$ / i','$ 1', $网址);