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
相关产品推荐
相关产品推荐

