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

PHP:如何用preg_match_all+foreach生成无尾逗号的匹配键逗号分隔列表

问题解决方法

原代码的核心问题是未收集所有匹配的键,直接输出单个结果导致无法生成带分隔符的合规列表。以下是修正后的代码:

<?php

$content = "They were FRIENDS. JAKE and JANE make a CAKE.";

$general_outcomes = [
    '1' => 'FRIENDS',
    '2' => 'CAKE',
    '3' => 'JANE',
    '4' => 'JAKE',
    '5' => 'MEGAN' // not present
];

$matched_slugs = [];
foreach ($general_outcomes as $slug => $outcome) {
    // 转义正则特殊字符,避免匹配逻辑异常
    if (preg_match('/\b' . preg_quote($outcome, '/') . '\b/u', $content)) {
        $matched_slugs[] = $slug;
    }
}

// 自动生成无尾逗号的逗号分隔列表
echo implode(',', $matched_slugs);

关键修正说明:

  • 新增$matched_slugs数组,专门存储所有匹配成功的键
  • 用preg_match替代preg_match_all,只需确认单词存在即可,无需统计出现次数
  • 添加preg_quote处理待匹配单词,避免其中的正则特殊字符(如.、*)干扰匹配结果
  • 最后通过implode(',', $matched_slugs)生成目标字符串,该函数会自动处理分隔符,不会在末尾添加多余逗号

运行修正后的代码,输出结果为:

1,2,3,4

内容的提问来源于stack exchange,提问作者Boris Smolyanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:21:30