Rya*_*yan 6 php regex replace preg-replace str-replace
我正在尝试从字符串创建常见的掩码,如下所示:
012abc.d+e_fg~hijk => 012{start}.d+{middle}_fg~{end}jk
Run Code Online (Sandbox Code Playgroud)
更换:
$arrFromTo = array(
'st' => '{pre}',
'abc' => '{start}',
'e' => '{middle}',
'hi' => '{end}',
'dd' => '{post}'
);
Run Code Online (Sandbox Code Playgroud)
相反,我保持重叠的替换,并得到这样的东西(使用循环的str_replace's):
012{{pre}art}.d+{mi{post}le}_fg~{end}jk
Run Code Online (Sandbox Code Playgroud)
因为st在已经被替换的中发现{start}并且dd被发现{middle}.
你会如何取代以下?
$str = 'abc.d+e_fg~hijk';
echo replace_vars($str); // Desired output: 012{start}.d+{middle}_fg~{end}kJ
Run Code Online (Sandbox Code Playgroud)
我可能会误解,但你似乎不需要正则表达式替换.它们是简单的,字面上的替代品.
$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
Run Code Online (Sandbox Code Playgroud)
strtr()太棒了.它需要一个非常易读的输入,它不会像循环中的问题那样重新替换.