gpt4 book ai didi

php - 如何使用 preg_replace 返回匹配数组和结果字符串?

转载 作者:行者123 更新时间:2023-12-05 07:45:29 25 4
gpt4 key购买 nike

我需要完成两件事,我想知道是否可以使用 preg_replace 来完成这两件事。

我需要改变一个字符串。现在我正在使用 preg_replace:

preg_replace($terms,$replace_with,$string,1);

其中 $terms 是一个术语数组,$replace_with 也是一个数组。

但我还需要在一个单独的数组中返回匹配项(以便稍后更新其他值),因为有几个术语,我不知道匹配了哪个。

我知道如何完成此操作的唯一方法是先运行 preg_match,默认情况下返回匹配数组,然后运行 ​​preg_replace 以实际用新值替换字符串。

有没有办法返回字符串,并且只匹配 preg_replace?

我的最终目标是获得更改后的 $string(目前使用 preg_replace 完成),以及匹配 $terms 的数组。

最佳答案

不,但是如果 $terms$replace_with有数字键(没有空格)你可以使用preg_replace_callback :

$matches = [];
foreach($terms as $k=>$term) {
$rep = $replace_with[$k];
$string = preg_replace_callback($term, function ($m) use ($rep, &$matches) {
$matches[] = $m[0];
return $rep;
}, $string, 1);
}

请注意,使用 foreach + preg_replace[_callback]与使用 preg_replace 做的完全一样使用数组作为第一个参数或使用 preg_replace_callback_array . (即:字符串按项目解析一次。)

关于php - 如何使用 preg_replace 返回匹配数组和结果字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com