Php 删除“;http://quot;一串

Php 删除“;http://quot;一串,php,Php,我有一个PHP脚本,可以从用户输入url字符串中删除“http://” 我的剧本: $url= "http://techcrunch.com/startups/"; $url = str_replace('http://', '', $url); 结果: $url= techcrunch.com/startups/ 这非常有效,只是有时候URL会改为“https://”。有没有一种方法可以让我删除域名之前的所有内容,不管它是什么?试试这个: $url = 'http://techcrunch

我有一个PHP脚本,可以从用户输入url字符串中删除“http://”

我的剧本:

$url= "http://techcrunch.com/startups/";
$url = str_replace('http://', '', $url);
结果:

$url= techcrunch.com/startups/
这非常有效,只是有时候URL会改为“https://”。有没有一种方法可以让我删除域名之前的所有内容,不管它是什么?

试试这个:

$url = 'http://techcrunch.com/startups/';
$url = str_replace(array('http://', 'https://'), '', $url);
编辑:

input: http://php.net/preg_replace
output: php.net/preg_replace

input: https://www.php.net/preg_replace
output: www.php.net/preg_replace

input: ftp://www.php.net/preg_replace
output: www.php.net/preg_replace

input: https://php.net/preg_replace?url=http://whatever.com
output: php.net/preg_replace?url=http://whatever.com

input: php.net/preg_replace?url=http://whatever.com
output: php.net/preg_replace?url=http://whatever.com

input: php.net?site=http://whatever.com
output: php.net?site=http://whatever.com
或者,一种始终删除协议的简单方法:

$url = 'https://www.google.com/';
$url = preg_replace('@^.+?\:\/\/@', '', $url);
这将删除“/”之前的所有内容

编辑


这个是测试过的。改为使用
strrpos()
strpos()

使用
preg\u replace
中的look behinds删除
/
之前的任何内容

preg_replace('(^[a-z]+:\/\/)', '', $url);

只有在字符串开头找到时,它才会替换,如果以后找到,它将忽略类似这样的操作:

$url = preg_replace("|^.+?://|", "", $url);
删除所有内容,包括
://

preg_replace('/^[^:\/?]+:\/\//','',$url);
一些结果:

input: http://php.net/preg_replace
output: php.net/preg_replace

input: https://www.php.net/preg_replace
output: www.php.net/preg_replace

input: ftp://www.php.net/preg_replace
output: www.php.net/preg_replace

input: https://php.net/preg_replace?url=http://whatever.com
output: php.net/preg_replace?url=http://whatever.com

input: php.net/preg_replace?url=http://whatever.com
output: php.net/preg_replace?url=http://whatever.com

input: php.net?site=http://whatever.com
output: php.net?site=http://whatever.com

这个问题必须回答一千遍。不要忘记在创建答案之前进行搜索。第二个Google搜索结果“从url字符串php中删除http”显示:这并没有回答问题。用户说:有没有一种方法我可以删除域名之前的所有内容,不管它是什么?这回答了如何删除http和https的问题,并给出了一个如何快速添加更多协议的好例子。@kirk虽然这是他的话,但用户的意图似乎只是删除http和https。@JAL:谢谢,至少你看到了同样的事情…@NeoNexusDeMortis我非常明白,但作为这个社区的一部分,我们希望提供完整的答案。不仅仅是我想到的,而且你的第二个答案在
techcrunch.com/startups/?重定向上不起作用=https://test.com
。它只返回
test.com
字符串替换,这种方式不是一个好主意。您假设所有用户都将正确地在输入中输入URL。只需一个用户即可输入URL,如“http:///www.amazon.com“来破解这个密码。始终假设用户输入了无效代码,并编写最健壮的代码。如果用户输入url,如:
techcrunch.com/startups/?redirect,该怎么办=https://test.com
?谢谢@Glavić,这是另一个很好的例子。你从哪里得到了80%的数字?说真的,这都是虚构的。我不是在找你的茬。我在批评你的代码。这就是这个网站的全部内容。如果你不想听,也不想去想那些更有经验的程序员的指导,那么你在编程领域将受到极大的伤害。@Glavić:好消息!修好了。使用非贪婪的
+
,它只会赶上第一个
://