Убрать из строки utf-8 все ненужные символы

Balkon

Новичок
Убрать из строки utf-8 все ненужные символы

мне нужно из строки utf-8 убрать все, что не является обычными (не уникод) символами a-z_0-9
как это сделать наиболее красиво?
 

Wicked

Новичок
preg_replace("/[^a-z_0-9]/", "", ...);

согласно спецификации утф-8, символы a-z, _ и 0-9 могут присутствовать только в составе однобайтных символов.

только вот возникает вопрос - зачем? :)
 

Balkon

Новичок
Все гениальное просто.
Спасибо.

Мне надо генерить аглицкую строку-указатель на ресурс из "заголовка" ресурса, который может содержать умляуты и прочее прочее.
 

Wicked

Новичок
вероятно, лучше просто делать транслитерацию. Т.е. чтобы "Ä" превращались в "A", и т.д.
 

Wicked

Новичок
попробуй iconv("UTF-8", "ASCII//TRANSLIT", $str);

-~{}~ 18.10.06 12:51:

а лучше US-ASCII//TRANSLIT
 

Balkon

Новичок
а оно должно нормально работать или зависит от каких-то внешних установок (модулей)?
У меня сейчас такой код возвращает одни вопросики:

PHP:
$str = "╨Я╨╕╨▓╨╛ ╨╕ ╨б╨┐╨╛╤А╤В!";
echo iconv("UTF-8", "ASCII//TRANSLIT", $str);
вообщем. тут форум корежит строку.
строка в utf-8. и этот способ возвращает "? ? ? ? ..."
 

Wicked

Новичок
сложно что-то сказать, не видя исходной строки... но я бы попобовал тогда так:

$str = iconv("UTF-8", "ISO-8859-1//IGNORE", $str); // сохраняем latin1 набор символов, т.е. US-ASCII + всякие умляуты... Остальные символы выбрасываются.
echo iconv("ISO-8859-1", "US-ASCII//TRANSLIT", $str); // делаем транслитерацию
 

Balkon

Новичок
хотелось бы тогда и уникод кириллицу транлитерировать...
 

Balkon

Новичок
это extension? хостер не даст поставить.

решил банальным str_replace'ом.
 
Сверху