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