$text = ' Длинный объемный текст с ----- --- лишние пробелами -- африка ';
$text1 = preg_replace('|[\s]+|s', ' ', $text);
$text2 = preg_replace('|-[\s]+|s', '-', $text1);
$text3 = preg_replace('|[\s]-+|s', '-', $text2);
echo $text3; // Длинный объемный текст с-лишние пробелами-африка
$text = preg_replace('/[\s]+/s', ' ', $text);
$text = preg_replace('/[\s\-]*-[\s\-]*/s', '-', $text);
echo $text ;