<?php
$string = 'hello w1 w2 w12 new1 new12 new2';
$map = [
'w1' => 'new1',
'w2' => 'new2',
'new1' => 'w1',
'new2' => 'w2',
];
$subpattern = implode('|', array_map('preg_quote', array_keys($map)));
echo preg_replace_callback(
'#\b(?:' . $subpattern . ')\b#u',
fn($m) => $map[$m[0]] ?? $m[0],
$string
);
- Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.7
- hello new1 new2 w12 w1 new12 w2
preferences:
87.71 ms | 402 KiB | 61 Q