问题描述
||
我有一个输入,您输入一个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;
}