3v4l.org

run code in 300+ PHP versions simultaneously
<?php $strings = [ "I-IVWM_Ask-21_(max_2h)", "D-7849_DG303_(max_4h)", "Aliante_Privato" ]; foreach ($strings as $str) { $pattern = "/^[^\s()]+(?:\([^()]*\))?$/"; echo preg_replace_callback($pattern, function ($x) { return trim(preg_replace("/[()_]+/", " ", $x[0])); }, $str) . PHP_EOL; }

preferences:
25.2 ms | 406 KiB | 5 Q