gpt4 book ai didi

php - 如何在不重叠结果的情况下替换字符串中的多个字符串?

转载 作者:可可西里 更新时间:2023-11-01 13:17:37 24 4
gpt4 key购买 nike

我正在尝试从这样的字符串创建通用掩码:

012abc.d+e_fg~hijk => 012{start}.d+{middle}_fg~{end}jk

替换:

$arrFromTo = array(
'st' => '{pre}',
'abc' => '{start}',
'e' => '{middle}',
'hi' => '{end}',
'dd' => '{post}'
);

相反,我保持重叠替换并得到类似这样的东西(使用 str_replace 的循环):

012{{pre}art}.d+{mi{post}le}_fg~{end}jk

因为 st 在已经替换的 {start} 中找到,而 dd{middle} 中找到>.

您将如何替换以下内容?

$str = 'abc.d+e_fg~hijk';

echo replace_vars($str); // Desired output: 012{start}.d+{middle}_fg~{end}kJ

最佳答案

我可能会误解,但您似乎不需要正则表达式来进行替换。它们是简单的字面替换。

$from = '012abc.d+e_fg~hijk';
$arrFromTo = array(
'st' => '{pre}',
'abc' => '{start}',
'e' => '{middle}',
'hi' => '{end}',
'dd' => '{post}'
);
$to = strtr($from, $arrFromTo); // 012{start}.d+{middle}_fg~{end}jk

strtr() 很棒。它需要非常可读的输入,并且不会像循环中的问题那样重新替换。

关于php - 如何在不重叠结果的情况下替换字符串中的多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26617806/

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