3v4l.org

run code in 300+ PHP versions simultaneously
<?php $myVar = 'essa pizza é muito gostosa, gostosa, gostosa, gosto'; $myWords = [ ['sabor', 'gosto', 'delicia'], ['saborosa', 'gostosa', 'deliciosa'], ]; $grouped = []; $flipped = []; foreach ($myWords as $row) { $grouped[] = '(' . implode('|', $row) . ')'; $flipped[] = array_flip($row); } $pattern = '/\b(?:' . implode('|', $grouped) . ')\b/'; var_export( preg_replace_callback( $pattern, function($m) use ($flipped) { array_shift($m); foreach ($m as $i => $captured) { if ($captured) { unset($flipped[$i][$captured]); return array_rand($flipped[$i]); } } }, $myVar ) );

preferences:
28.86 ms | 409 KiB | 5 Q