-3

可能重复:
在缺少时将 http:// 前缀添加到 URL

我正在使用这样的代码:

<?php echo $_GET['i']; ?>

myweb.com/sample.php?i=http://sample.com

但我想确保它总是有http://以防万一myweb.com/sample.php?i=sample.com

如何使此代码<?php echo $_GET['i']; ?>确保始终添加http://以防万一?

4

4 回答 4

0

使用这种方式:

<?php
    if (strpos("http://", $_GET['i']) !== 0)
        $_GET['i'] = "http://" . $_GET['i'];
?>

或作为回声语句:

echo (strpos("http://", $_GET['i']) !== 0) ? "http://" . $_GET['i'] : $_GET['i'];
于 2012-12-19T09:10:50.260 回答
0

如果您要在查询字符串中动态生成上述 http url,请使用 php 中的 urlencode 或 rawurlencode 函数将查询字符串连接到您的 url,然后使用 http get ($_GET['i']) 接受请求。

希望对你有效。

于 2012-12-19T09:12:13.497 回答
0

使用 stristr() 函数。

$url = stristr($_GET['i'],'http://');
if($url != '')

然后字符串包含'http'。

于 2012-12-19T09:12:32.623 回答
0

您可以检查您的 $_GET['i'] 并仅接受 http:

例如:

'http://' 包含 7 个字符 + 最小的 url 'w.xx' 包含 4 个字符

因此,您的 $_GET[i] 的最小长度是 11 个字符

if(!empty($_GET['i']))
{

    $len = strlen($_GET['i']);
    if($len > 10 and  substr($_GET['i'], 0, 7) === 'http://')
    {     
        [... some of your code ?]
    }
    else if ($len > 3)
    {

        //force add http://
        $_GET['i'] = 'http://'.$_GET['i'];
     }

     unset($len);
}
else
{
    $_GET['i'] = 'No url?';
}

// <-- Place for your echo
于 2012-12-19T09:09:19.277 回答