PHP警告:strpos

时间:2014-08-28 02:46:41

标签: php strpos

所以我到处寻找,我无法解决问题的解决方案。我正在使用Steam OpenID,并且我不断收到此消息:警告:strpos()[function.strpos]:偏移量未包含在字符串中。

    if(($host_end = strpos($this->trustRoot, '/', 8)) !== false) {
        $this->trustRoot = substr($this->trustRoot, 0, $host_end);
    }

2 个答案:

答案 0 :(得分:1)

看起来很简单,它抱怨你为搜索开始提供的偏移量(8)不包含在字符串中。

换句话说,$this->trustRoot对于您的初始偏移来说太短了。

如果您前往an online PHP tester site并输入:

,您可以看到此操作
echo strpos("abc","a",42);

输出与您看到的相同,如:

  

Warning: strpos(): Offset not contained in string on line 1

修复是为了确保您的字符串在尝试搜索之前足够长,例如:

if (strlen ($this->trustRoot) > 8) {
    if(($host_end = strpos ($this->trustRoot, '/', 8)) !== false) {
        $this->trustRoot = substr ($this->trustRoot, 0, $host_end);
    }
}

答案 1 :(得分:0)

在尝试引用过去的字符8之前,您需要测试字符串的长度:

if (strlen($this->trustRoot) > 8 && ($host_end = strpos($this->trustRoot, '/', 8) !== false) {
    ...
}