С кодировкой вроде всё ок. В БД есть такой фрагмент текста с дефисом:
Регулярка /-/ism его не видит, в чём может быть проблема и как определить что это за символ?
Дмитрий: В таком случае, возьмите строку из базы, разбейте на символы и с помощью ord() для ASCII-строки или IntlChar::ord() для Unicode получите информацию о том, что же это за символ (его код).