Php strpos函数不会检测实例是否是字符串中的第一个字

Php strpos函数不会检测实例是否是字符串中的第一个字,php,Php,需要用url参数中的值替换这段字符串。为此创建了一个{hkw}}令牌。如果替换的文本不作为字符串中的第一项使用,则可以非常好地工作。但是如果我一开始就使用它,什么都不会发生。 例如: 如果我使用replacement-fullowing{{hkw}},那么所有内容都会被正确替换。 如果我使用{{hkw}}替换,则不会发生任何事情,{{hkw}仍然存在 起初,我试过这个 if (strpos($kwttl,'{{hkw}}') !== false) 在谷歌搜索之后,我发现以下方法应该有

需要用url参数中的值替换这段字符串。为此创建了一个{hkw}}令牌。如果替换的文本不作为字符串中的第一项使用,则可以非常好地工作。但是如果我一开始就使用它,什么都不会发生。 例如: 如果我使用replacement-fullowing{{hkw}},那么所有内容都会被正确替换。 如果我使用{{hkw}}替换,则不会发生任何事情,{{hkw}仍然存在

起初,我试过这个

     if (strpos($kwttl,'{{hkw}}') !== false)
在谷歌搜索之后,我发现以下方法应该有效

    if (strpos($kwttl,'{{hkw}}') === true)
但事实并非如此。 这是我的全部代码

    $fullurl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $kwttl = get_the_title();
    if (strpos($fullurl,'hkw') === true) {
        $hkwsub = $_GET['hkw'];
        if (strpos($hkwsub,'+') === true) {
            $hkwsub = str_replace('+', ' ', $hkwsub);
        } 
    } else {
        $hkwsub = '';
    }
    if (strpos($kwttl,'{{hkw}}')) {
        $kwttl = str_replace('{{hkw}}', $hkwsub, $kwttl);
    }
错误日志为空

您认为strop可以返回strict true的假设是不正确的。函数strpos返回以下任一项:

如果找不到字符串,则为false,或者 如果找到字符串,则整数>=0 您的完整代码应改为:

$fullurl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$kwttl = get_the_title();
if (strpos($fullurl,'hkw') !== false) {
    $hkwsub = $_GET['hkw'];
    if (strpos($hkwsub,'+') !== false) {
        $hkwsub = str_replace('+', ' ', $hkwsub);
    } 
} else {
    $hkwsub = '';
}
if (strpos($kwttl,'{{hkw}}') !== false) {
    $kwttl = str_replace('{{hkw}}', $hkwsub, $kwttl);
}

你的意思是如果错了!==strpos$fullurl,'hkw'…lol。。。我只想添加字符串索引,比如数组索引,从0开始,所以0的位置就像是说$string[0],PHP因为它的松散类型,所以会将0视为Falsy。这就是为什么您需要使用严格的类型检查===PS不要告诉任何人,但这确实有效$s='string';echo$s[0];它输出s..: