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

PHP中如何用多维数组配合str_replace函数实现批量词语替换

问题原因

你当前的数组结构不符合str_replace的参数要求:
str_replace前两个入参需要是索引一一对应的一维数组,第一个数组存所有待替换的原字符串,第二个数组同索引位置存对应的替换目标字符串。你现在的二维数组是每个子元素单独存[原词, 替换词],和要求的结构为转置关系,所以原代码实际执行的是把frog替换为Nock、sock替换为crock,和你的需求完全不符。

解决方案

方案1:保留现有二维数组结构

用array_column分别提取待替换词列和替换词列传入即可:

$wordsList = [
    array("frog","sock"),
    array("Nock","crock"),
];

$search = array_column($wordsList, 0);
$replace = array_column($wordsList, 1);

$message = str_replace($search, $replace, "frog frog Nock Nock");
echo $message;
// 输出:sock sock crock crock
// 如需匹配你预期的crocs输出,将第二个子数组的crock修改为crocs即可

方案2:调整为键值对结构,代码更简洁

如果可以修改数组结构,直接将敏感词作为键、替换词作为值,使用strtr函数无需拆分数组,可读性更高:

$wordsList = [
    "frog" => "sock",
    "Nock" => "crock"
];

echo strtr("frog frog Nock Nock", $wordsList);

内容的提问来源于stack exchange,提问作者Neon Foxer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:18:01