может ка-то можно модернизировать мое решение:
$string = 'p—uf__«k-rasnaya_pt«»itsa»';
echo preg_replace('/_{2,}/','_', preg_replace('/«|»|«|»|[—-\s]/','', $string));
оно выдает именно нужный результат при всех случаях
но очень корявое на мой взгляд
спасибо за помощь