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

PHP+ACF多关键词文本匹配循环代码报错求助

多关键词匹配ACF字段的PHP代码修正

你的代码存在两个核心错误:

  1. strpos函数用法错误:strpos仅支持3个参数(目标字符串、单个关键词、可选的起始搜索位置),无法一次性传入多个关键词。
  2. 条件判断逻辑错误:strpos返回的是关键词在字符串中的起始位置(整数)或false(未找到),不可能等于关键词本身的字符串内容。

修正后的代码

$text = get_field('my_acf_field');
// 用数组关联关键词与对应输出,后续维护更便捷
$keywordMap = [
    "text" => "Lorem Ipsum 1",
    "text 2" => "Lorem Ipsum 2",
    "text 3" => "Lorem Ipsum 3"
];

$found = false;
foreach ($keywordMap as $keyword => $output) {
    // 用!==严格判断,避免关键词在起始位置时返回0被误判为未找到
    if (strpos($text, $keyword) !== false) {
        echo $output;
        $found = true;
        break; // 找到第一个匹配项就停止,若需匹配所有关键词可删除此句
    }
}

if (!$found) {
    echo "Text not found";
}

代码说明

  • 使用数组$keywordMap统一管理关键词和对应输出,新增或修改关键词时只需调整数组,无需修改判断逻辑。
  • 严格用strpos($text, $keyword) !== false判断关键词是否存在,避免因关键词位于字符串起始位置(返回0)被误判为未找到。
  • 如果需要支持多个关键词同时匹配并输出所有对应内容,只需移除break语句即可。

内容的提问来源于stack exchange,提问作者Magnus Schmidt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:12:05