3v4l.org

run code in 300+ PHP versions simultaneously
<?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