检查字符串是否包含“HTTP://”

时间:2010-12-20 07:55:19

标签: php string

我想知道为什么这段代码不起作用:

// check to see if string contains "HTTP://" in front

if(strpos($URL, "http://")) $URL = $URL;
else $URL = "http://$URL";

如果确实发现该字符串不包含“HTTP://”,则最终字符串为“HTTP:// HTTP://foo.foo”,如果它在前面包含“http://”。 / p>

7 个答案:

答案 0 :(得分:36)

因为它为该字符串返回0,该字符串的计算结果为false。字符串是零索引的,因此如果在字符串的开头找到http://,则位置为0,而不是1.

您需要使用!==

将严格不等式与布尔值false进行比较
if(strpos($URL, "http://") !== false)

答案 1 :(得分:10)

@ BoltClock的方法将起作用。

或者,如果您的字符串是一个URL,您可以使用parse_url(),它将返回关联数组中的URL组件,如下所示:

print_r(parse_url("http://www.google.com.au/"));


Array
(
    [scheme] => http
    [host] => www.google.com.au
    [path] => /
)

scheme就是你所追求的。您可以将parse_url()in_array结合使用,以确定网址字符串中是否存在http

$strUrl       = "http://www.google.com?query_string=10#fragment";
$arrParsedUrl = parse_url($strUrl);
if (!empty($arrParsedUrl['scheme']))
{
    // Contains http:// schema
    if ($arrParsedUrl['scheme'] === "http")
    {

    }
    // Contains https:// schema
    else if ($arrParsedUrl['scheme'] === "https")
    {

    }
}
// Don't contains http:// or https://
else
{

}

修改

您可以使用$url["scheme"]=="http"作为@mario建议而不是in_array(),这是更好的方法:D

答案 2 :(得分:5)

if(preg_match("@^http://@i",$String))
    $String = preg_replace("@(http://)+@i",'http://',$String);
else
    $String = 'http://'.$String;

答案 3 :(得分:5)

您需要记住https://。 试试这个:

private function http_check($url) {
    $return = $url;
    if ((!(substr($url, 0, 7) == 'http://')) && (!(substr($url, 0, 8) == 'https://'))) {
        $return = 'http://' . $url;
    }
    return $return;
} 

答案 4 :(得分:1)

你检查字符串是否包含“HTTP://”或不是

以下代码完美无缺。

<?php 
$URL = 'http://google.com';
$weblink =   $URL; 
    if(strpos($weblink, "http://") !== false){ }
    else { $weblink = "http://".$weblink; }
 ?>
  <a class="weblink" <?php if($weblink != 'http://'){ ?> href="<?php echo $weblink; ?>"<?php } ?> target="_blank">Buy Now</a>

享受家伙......

答案 5 :(得分:0)

您可以使用substr_compare() [PHP Docs]

注意函数返回的内容。如果字符串匹配,则返回0. 对于其他返回值,您可以检查PHP文档。还有一个参数来检查区分大小写的字符串。如果您将其指定为TRUE,那么它将检查大写字母。

所以你可以在你的问题中写下如下:

if((substr_compare($URL,"http://",0,7)) === 0) $URL = $URL;
else $URL = "http://$URL";

答案 6 :(得分:-2)

一线解决方案:

$sURL = 'http://'.str_ireplace('http://','',$sURL);