微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果http://是字符串,则保留它,否则不添加

如何解决如果http://是字符串,则保留它,否则不添加

|| 我有一个输入,您输入一个URL,我基本上想编写一些PHP,说如果域包含\“ http:// \”,则保留它,否则,将其添加到开头。 这是我到目前为止所拥有的...
$domain = $_POST[\"domain\"];

if (strpos($domain,\"http://\")) {
return $domain;
} else {
$domain = \"http://\" . $domain;
}
这似乎不起作用.. 如果不包含http://,则不会添加http://。     

解决方法

  \“ http:// \”然后保留它,否则,将其添加到开头。 如何添加添加呢?我发现这更容易:
<?php
$url = \'http://www.google.com\';
echo \'http://\' . preg_replace( \'~^http://~\',\'\',$url );
    ,您忘记返回$ domain。
$domain = $_POST[\"domain\"];

if (strpos($domain,\"http://\") !== false) {
return $domain;
} else {
return \"http://\" . $domain;
}
    ,由于字符串以
http://
开头,因此
strpos
将返回
0
,其结果为false。 将if语句更改为:
if(strpos($domain,\"http://\") !== FALSE){
    ,阅读手册:   该函数可能返回布尔值   FALSE,但也可能返回   非布尔值,其值为   FALSE,例如0或\“ \”。请阅读   关于布尔的更多内容   信息。将===运算符用于   测试这个的返回值   功能。     ,这是因为strpos将返回字符串在字符串中的位置。 在您的网址中,该值为0。等于false。进行严格检查-添加=== false。     ,
if (strpos($domain,\"http://\") !== false) {
//return substr($domain,7); Thanks Rocket. 
return $domain;
} else {
return \"http://\" . $domain;
}
    ,我知道这对聚会来说有点晚了,但是我更喜欢这种方法:
if (!preg_match(\'#^http[s]{0,1}://#\',$input)) {
    $input = \'http://\' . $input;
}
这将保留一个https://地址,并且不会让您以
http://https://www.mysite.com
结尾。如果您有不使用https地址的规则,还可以进一步对其进行编辑以去除https://。 我知道最初的问题并没有要求这样做,但是我认为在大多数情况下考虑这一点很重要,并希望能对其他有帮助的人有所帮助。     ,使用strpos()时请小心。当在字符串的开头找到\'http:// \'时,它将返回0,从而导致if语句意外失败。您将要检查退货的类型以确保:
$domain = $_POST[\"domain\"];

if (FALSE !== strpos($domain,\"http://\")) {
    return $domain;
} else {
    return \"http://\" . $domain;
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。