我正在寻找将http://添加到提交的url的最佳方法。我有一个网站,允许用户在注册时提交他们的网站url,问题是一些用户类型"example.com"一些用户类型"www.example.com"和一些类型"http(s)://example.com"
我想要完成的是确保最终结果是"http(s)://example.com",无论他们提交什么。
有没有办法做到这一点,仍然说明其他东西,如co.uk或https?
您并不真正需要REGEX。REGEX通常非常昂贵。这是一个实现你的目标的自制函数:
function fix_url($url) {
return (substr($url, 0, 7) == 'http://' || substr($url, 0, 8) == 'https://')
? $url
: 'http://'.$url;
}
样本:
$url = 'example.com';
$url1 = 'httpexample.com';
$url2 = 'http://example.com';
$url3 = 'https://example.com';
echo fix_url($url);
echo '<br>';
echo fix_url($url1);
echo '<br>';
echo fix_url($url2);
echo '<br>';
echo fix_url($url3);
echo '<br>';
输出:http://example.com
http://httpexample.com
http://example.com
https://example.com
如果你有任何疑问,请考虑在下面留言。
引用:
- substr ()
考虑到http(s)://,这是非常直接的,因为只有两个选项要检查。即检查链接是否以"http://"或"https://"开头,如果不是,则添加"http://"。
你问题的另一部分是解释"。co.",你可以在字典中收集所有可用的后缀,这是一个非常糟糕的主意,或者你可以简单地检查是否存在"。",把"。"后面的内容留给用户负责。
我希望我回答了你的问题:)
for php,
$str = preg_replace('/(?m)^(?!https?:'/'/.+)('S+)/',"http://$1",$str);
修复URL的简单方法:)
function addHttp( $url )
{
if ( !preg_match("~^(?:f|ht)tps?://~i", $url) )
{
$url = "http://" . $url;
}
return $url;
}
在提交的URL中搜索'http'和'https',如果搜索返回null,在开头添加'http'。使用Javascript:mystring var = " example.com ";var正常= 1;var担保= 1;正常= mystring.search (/http/我);安全= mystring.search (/https/我);等等