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

如何在str_replace中使用搜索数组并将匹配内容替换为对应找到的搜索值

你原有写法运行失败的核心原因有两个:

  1. 直接把数组$search_array和字符串拼接,PHP会强制把数组转为字符串,最终只会得到固定的Array文本,无法对应每个匹配项的内容
  2. str_replace如果传入字符串作为替换值,所有匹配到的搜索项都会被替换成同一个值,无法实现每个匹配项对应不同的按钮文本。

实现方案

方案1:搭配array_map生成对应替换数组(适合固定搜索项场景)

提前遍历你的搜索数组,生成和搜索项一一对应的替换数组,再传入str_replace即可:

<?php
$search_array = array("**JOB DESCRIPTION1**","**JOB DESCRIPTION2**","**JOB DESCRIPTION3**");
// 生成一一对应的替换数组
$replace_array = array_map(function($match_item) {
    // trim($match_item, '*') 是去掉匹配内容前后的**,如果需要保留可以直接用$match_item
    return '<button>Click here to replace '.trim($match_item, '*').'</button>';
}, $search_array);

$string = "**JOB DESCRIPTION1** does this objective, and **JOB DESCRIPTION2** does this.";
$new_string = str_replace($search_array, $replace_array, $string);
?>

方案2:用preg_replace_callback正则匹配(适合规则化的搜索场景)

如果你的搜索项都是**JOB DESCRIPTION+数字**格式,不需要提前罗列所有搜索项,直接用正则匹配处理即可:

<?php
$string = "**JOB DESCRIPTION1** does this objective, and **JOB DESCRIPTION2** does this.";
$new_string = preg_replace_callback(
    '/\*\*JOB DESCRIPTION\d+\*\*/', // 匹配符合格式的内容
    function($matches) {
        return '<button>Click here to replace '.trim($matches[0], '*').'</button>';
    },
    $string
);
?>

内容的提问来源于stack exchange,提问作者Ian Castillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:36:00