繁体   English   中英

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

[英]strpos function doesn't detect instance if it's first word in a string

需要用来自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);
    }

错误日志为空

您关于strpos()可以返回strict true的假设是错误的。 函数strpos()返回以下之一:

  1. 如果找不到该字符串,则返回false ;或者
  2. 如果找到字符串,则>> 0的整数

PHP手册参考

您的完整代码应为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM