所以我到处寻找,我无法解决问题的解决方案。我正在使用Steam OpenID,并且我不断收到此消息:警告:strpos()[function.strpos]:偏移量未包含在字符串中。
if(($host_end = strpos($this->trustRoot, '/', 8)) !== false) {
$this->trustRoot = substr($this->trustRoot, 0, $host_end);
}
答案 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) {
...
}