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

时间:2018-12-28 01:14:04

标签: php

需要用来自url参数的值替换字符串。为此创建了一个{{hkw}}“令牌”。如果未将替换文本用作字符串的第一件事,则效果很好。但是,如果我从一开始就使用它-不会发生任何事情。 例如: 如果我使用“替换{{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);
    }

错误日志为空

1 个答案:

答案 0 :(得分:1)

您对strpos()可以返回strict true的假设是不正确的。函数strpos()返回以下任一值:

  1. false(如果找不到该字符串),或者
  2. 如果找到字符串,则为整数> = 0

PHP Manual Reference

您的完整代码应为:

$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);
}