Вырезать русские символы

Pustota

Новичок
Вырезать русские символы

Народ, помогите. Нужно в названии товара убрать все русские буквы, оставив только латинские.
В регекспах не силен. Попробовал так сделать:

ereg_replace("[А-Я]", "", $row);

Вроде убирает, но может есть более универсальный способ?

Еще столкнулся с такой проблемой, если в названии между русскими символами дефис, то он его оставляет.
получается вместо "БАС-ГИТАРА" "-".
Поправил на это:

ereg_replace("[А-Я-]", "", $row);

Но теперь убирает дефис и из английских слов.
Как сделать чтобы убиралось все с первой до последней русской буквы?
 

DiMA

php.spb.ru
Команда форума
preg_replace("![А-Яа-яЁё]!", .. )
preg_replace("![А-Я]!i", .. ) - если локаль стоит

Лучше убирать не русские. А все, кроме ДОПУСТИМЫХ символов.

preg_replace("![А-Я]+(-[А-Я]+)*!i", .. ) - для слов с тире
 

x-yuri

Новичок
As of PHP 5.3.0 Regular Expression (POSIX Extended) is deprecated, calling any function provided by this extension will issue an E_DEPRECATED notice.
 

Pustota

Новичок
Чтобы не лопатить вручную кучу названий. А то, что это "бас-гитара" люди и так поймут из категории.
 

x-yuri

Новичок
ну я бы на твоем месте сначала не оптимизировал, только когда выяснил бы, что медленно работает
 

Pustota

Новичок
Под оптимизацией я не скорость подразумевал (скорость устраивает, и даже не в целях экономии это решил сделать). А правильность написания + точность действия. Третий способ от DiMA - в точности то, что нужно.
 

x-yuri

Новичок
если ты уверен, что русские символы - всегда избыточная информация в твоей ситуации, тогда их можно убрать.
Я просто подумал, что пользователю они не помешают, и может даже будут случаи, когда помогут.
Кроме того, бывает, люди пишут русские символы вместо английских (c, H, A, ...).
 
Сверху