我有一个PHP脚本,可以从用户输入的url字符串中删除“http://”。
我的剧本:
$url= "http://techcrunch.com/startups/";
$url = str_replace('http://', '', $url);
结果:
$url= techcrunch.com/startups/
这很有效,除了有时网址有“https://”。有没有办法可以删除域名之前的所有内容,无论它是什么?
答案 0 :(得分:1)
试试这个:
$url = 'http://techcrunch.com/startups/';
$url = str_replace(array('http://', 'https://'), '', $url);
修改强>
或者,总是删除协议的简单方法:
$url = 'https://www.google.com/';
$url = preg_replace('@^.+?\:\/\/@', '', $url);
答案 1 :(得分:0)
使用preg_replace
中的后面的内容删除//
之前的任何内容。
preg_replace('(^[a-z]+:\/\/)', '', $url);
只有在字符串的开头找到它才会替换,如果稍后找到则会忽略
答案 2 :(得分:0)
这样的事应该做:
$url = preg_replace("|^.+?://|", "", $url);
删除所有内容,包括://
答案 3 :(得分:0)
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
答案 4 :(得分:-1)
$new_website = substr($str, ($pos = strrpos($str, '//')) !== false ? $pos + 2 : 0);
这将删除'//'。
之前的所有内容修改强>
这个是经过测试的。改为使用strrpos()
或strpos()
。