gpt4 book ai didi

PHP 用单个正则表达式模式替换所有实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:12 25 4
gpt4 key购买 nike

我有一个正则表达式,我想以最有效的方式用相应的替换数组替换匹配数组中的每个匹配项。

例如,我有:

$string = '~~hello~~ there, how ~~are~~ ~~you~~?';

$pattern = '/~~(.*?)~~/';

$replacements = array();
$replacements[0] = 'hi';
$replacements[1] = 'am';
$replacements[2] = 'i';

我想把 $string 变成:

hi there, how am i?

最初我希望它会像这样简单:

$string = preg_replace($pattern, $replacements, $string);

但是好像不行。所以第一个问题是:如果 $replacements 是一个数组,那么 $string 是否也必须是一个数组?

现在,我可以想出(看似)低效的方法来执行此操作,例如计算匹配项的数量并制作一个数组,其中填充适当数量的相同正则表达式。但这将我们引向第二个问题:是否有更有效的方法? PHP 专家,您会怎么做?

最佳答案

你可以在这里使用一个简单的评估技巧:

print preg_replace('/~~(\w+)~~/e', 'array_shift($replacements)', $st);

array_shift只会从您的替换数组中获取第一个条目。

不过最好还是使用 map ("hello"=> "hi")。

关于PHP 用单个正则表达式模式替换所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427253/

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