Почему preg_replace не работает, если в регулярном выражении указан модификатор?
Есть строка: 'qw123`!@#$^&*I)&)%*#^_)*)^* $^@%$&-_&%&*#^zxЛО ---Лcd - asd asd '
Нужно чтобы на выходе эта строка выглядела вот так: qw123-I-zxЛО-Лcd-asd-asd.
Есть код:
$output = trim(preg_replace('/([^\w]+|[\_])+/', '-',strtolower($temp)), '-');
выводит эту строку вот так: qw123-i-zx�-�-�-cd-asd-asd
Есть модификатор для регулярок u. Но если его использовать в функции preg_replace ничего не выводит вообще. Помогите пожалуйста.
Если в исходной строке есть UTF-8, то \w работать не будет. Нужно либо писать так: '/^([а-яА-ЯЁёa-zA-Z0-9_]+)$/u'
Либо использовать функции РНР:
mb_ereg
mb_ereg_match
mb_regex_encoding