gpt4 book ai didi

php - preg_replace 使用模式作为替换数据数组的索引

转载 作者:可可西里 更新时间:2023-11-01 12:50:46 25 4
gpt4 key购买 nike

我想知道是否有一种简单的方法可以将 preg_replace 中的匹配模式用作替换值数组的索引。

例如

preg_replace("/\{[a-z_]*\}/i", "{$data_array[\1]}", $string);

搜索 {xxx} 并将其替换为 $data_array['xxx'] 中的值,其中 xxx 是一个模式。

但是这个表达式不起作用,因为它的 php.ini 无效。

我已经写了下面的函数,但我想知道是否可以简单地做到这一点。我可以使用回调,但如何将 $data_array 也传递给它?

function mailmerge($string, $data_array, $tags='{}')
{
$tag_start=$tags[0];
$tag_end =$tags[1];
if( (!stristr($string, $tag_start)) && (!stristr($string, $tag_end)) ) return $string;

while(list($key,$value)=each($data_array))
{
$patterns[$key]="/".preg_quote($tag_start.$key.$tag_end)."/";
}
ksort($patterns);
ksort($data_array);

return preg_replace($patterns, $data_array, $string);
}

最佳答案

从我的头上:

preg_replace_callback("/\{([a-z_]*)\}/i", function($m) use($data_array){
return $data_array[$m[1]];
}, $string);

注意:以上功能需要PHP 5.3+。

关于php - preg_replace 使用模式作为替换数据数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237882/

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