You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP子串查找替换问题求助:代码始终返回false排查

问题分析与解决方案

你的代码有两个关键问题导致$check始终为false,咱们一步步拆解来看:

1. strpos的判断逻辑错误

在PHP中,strpos()找到子串时会返回它的起始索引位置(从0开始计数);找不到才返回false。你的初始字符串abcbabababbbacc里,abc正好在开头(索引0),这时候strpos($set, "abc")返回0,而PHP里0在布尔判断中会被视为false,导致你的if条件根本不会执行,$check自然一直保持初始的false。

正确的判断方式必须用**严格不等于!==**来区分索引0和false:

if(strpos($set, "abc") !== false)

2. preg_replace的用法错误

preg_replace()的第一个参数要求是带分隔符的正则表达式,直接写"abc"会触发PHP警告(缺少正则分隔符,比如/),导致替换操作失败。而且如果只是做普通的字符串替换,完全没必要用正则函数,str_replace()更简单高效,还不会有正则相关的额外开销。

修正后的完整代码

$check = false;
$set = "abcbabababbbacc"; // 假设你的初始字符串为这个
if(strpos($set, "abc") !== false) {
    // 用str_replace处理普通字符串替换更合适
    $set = str_replace("abc", "aab", $set);
    $check = true;
}
return $check;

修改后代码就能正确检测到abc的存在,完成替换并将$check设为true了。

内容的提问来源于stack exchange,提问作者Hariti Desai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:27:37