Здесь есть несколько вариантов, но я бы сделал один из них:
// str_replace() the spaces to _, and rtrim() numbers/percents/brackets/spaces/underscores
$result = str_replace(' ','_',rtrim($str,'01234567890%() _'));
или
// Split by spaces, remove the last element and join by underscores
$split = explode(' ',$str);
array_pop($split);
$result = implode('_',$split);
, или вы можете использовать один из тысячи подходов с регулярными выражениями, какПредложено другими ответами.
Решение о том, какой подход использовать, зависит от того, как именно отформатированы ваши строки и насколько вы уверены, что формат всегда останется прежним.Подход regex потенциально более сложен, но может обеспечить более детальный контроль в долгосрочной перспективе.