Blu*_*lur 39 php function preg-replace
示例用户输入
http://domain.com/
http://domain.com/topic/
http://domain.com/topic/cars/
http://www.domain.com/topic/questions/
Run Code Online (Sandbox Code Playgroud)
我想要一个PHP函数来使输出像
domain.com
domain.com/topic/
domain.com/topic/cars/
www.domain.com/topic/questions/
Run Code Online (Sandbox Code Playgroud)
让我知道 :)
小智 112
ereg_replace 现已弃用,因此最好使用:
$url = preg_replace("(^https?://)", "", $url );
Run Code Online (Sandbox Code Playgroud)
这将删除http://或https://
Jac*_*kin 32
您应该使用一组"不允许"的术语并使用strpos并str_replace从传入的URL中动态删除它们:
function remove_http($url) {
$disallowed = array('http://', 'https://');
foreach($disallowed as $d) {
if(strpos($url, $d) === 0) {
return str_replace($d, '', $url);
}
}
return $url;
}
Run Code Online (Sandbox Code Playgroud)
Mad*_*aks 23
我建议使用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);
?>
Run Code Online (Sandbox Code Playgroud)
上面的例子将输出:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
Run Code Online (Sandbox Code Playgroud)
这听起来像你至少host+ path(根据需要添加其他,例如query):
$parsed = parse_url('http://www.domain.com/topic/questions/');
echo $parsed['host'], $parsed['path'];
> www.domain.com/topic/questions/
Run Code Online (Sandbox Code Playgroud)
干杯
小智 8
创建一个数组:
$remove = array("http://","https://");
并替换为空字符串:
str_replace($remove,"",$url);
它看起来像这样:
function removeProtocol($url){
$remove = array("http://","https://");
return str_replace($remove,"",$url);
}
Run Code Online (Sandbox Code Playgroud)
如果您的 haystack(输入)是字符串并且您用字符串替换数组中的针,则 Str_replace 将返回一个字符串。这很好,因此您可以避免所有额外的循环。
快乐编码!
哇。我从谷歌来到这里,希望找到一个可以复制和粘贴的衬垫!
您不需要一个函数来执行此操作,因为已经存在一个函数。做就是了:
echo explode("//", "https://anyurl.any.tld/any/directory/structure", 2)[1];
Run Code Online (Sandbox Code Playgroud)
在此示例中,explode() 将返回一个数组:
["https:", "anyurl.any.tld/any/directory/structure"]
Run Code Online (Sandbox Code Playgroud)
我们想要第二个元素。这将处理 http、https、ftp 或几乎任何 URI,而不需要正则表达式。
https://www.php.net/manual/en/function.explode.php
如果你想要一个功能:
function removeProtocols($uri) { return explode("//", $uri, 2)[1]; }
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅 Harry Lewis 的用户评论...这是我现在最喜欢的方法。
您可以使用ereg_replace删除一行中的https和http:
$url = ereg_replace("(https?)://", "", $url);
Run Code Online (Sandbox Code Playgroud)