| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > проблема регистра, замена в строке |
| Автор: evya 23.9.2010, 19:27 |
| Почему то не могу поменять: Имею строку Лена красива женщина пОШла домой $poisk="пошла" $poisk2="потопола" $test=~s/$poisk/$poisk2/gi; почему то не меняет изза регистра пОШла, хотя индефикатор i имеется |
| Автор: vadiml 24.9.2010, 00:02 |
| Если не указать какая кодировка, то от модификатора /i есть прок только для латинских букв. Поэтому если у Вас не utf8, то лучше не связываться с разными кодировками, а перед проверкой привести у одному регистру $test = 'Лена красива женщина пОШла домой'; $test =~ tr/АБВГДЕЁ/абвгдеё/ и т.д. весь алфавит |
| Автор: admsasha 24.9.2010, 14:01 |
| добавь use locale; |
| Автор: evya 24.9.2010, 14:48 |
| use locale; что нам даст??? |
| Автор: admsasha 24.9.2010, 14:55 | ||
Даст использование текущей локали. Не работает ? |
| Автор: evya 24.9.2010, 15:23 |
| нет не помогает решить задачу причем mysql ищет нормально внезависимости от регистра латинские символы хорошо проглатывает, а русские вообще не помогает $test=~s/$poisk/$poisk2/gi; |
| Автор: admsasha 24.9.2010, 15:27 |
| какая OS, какая локаль, в какой кодировке файл и текст в нем ? |
| Автор: evya 24.9.2010, 15:39 |
| сервер UNIX С сайта приходит через jquery в UTF я его перекодирую в from_to ($poisk, 'UTF-8', 'CP1251'); из mysql данные то же идут в ср1251 потом мне нужно подсветить искомое слово и вывести все данные в этом и загвозка изза регистра слова поиск подстановка не работает |
| Автор: admsasha 24.9.2010, 15:42 | ||
| прям unix ?? Серверная локаль какая ? Добавлено @ 15:45 впрочем, скорее всего будет тогда так
|
| Автор: evya 24.9.2010, 16:13 | ||
| прям unix Серверная локаль - не пойму
то же не помогает ты думаешь в разных кодировках сравнивается??? так вроде все в одной кодировке. -i вообще для кирилицы работает??? $test=~s/$poisk/$poisk2/gi; |
| Автор: admsasha 24.9.2010, 16:32 | ||||
Странно работать в unix с cp1251 Естественно работает, только нужно правильно выстроить понимание кодировки для программы. Не сравнения в разных кодировках, а скрипт живет в другой кодировке, поэтому не может понять, какое соответствие регистров у данной. Как это я понимаю. текст - может быть. P.S. Специально проверил на своем компьютере, установка "use locale" помогла решить проблему. набери простой пример, будет работать ?
у меня вывод
|