Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получаеться preg_replace c utf и кириллицей, Поясните почему 
:(
    Опции темы
gendelman
Дата 6.11.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.4.2008

Репутация: нет
Всего: нет



Здравствуйте, борюсь с preg_replace.
Захотел примерно такую utf-строку:

    Шла  !  2128506  Саша --- по@Shosse {{}} и сосала ,.% 111

превратить в такую:

    Шла,2128506,Саша,по,Shosse,и,сосала,111

Т.е. через запятую собрать слова и последовательности цифр.
Понятно, что просто любую последовательность из НЕ букв и НЕ цифр надо просто заменить на запятую, но что-то не получаеться.
Кириллица на выходе либо совсем выпадает, либо вылядит вот так - '?ла,С?ша,?о,Shosse'.
Перепробовал кучу вариантов, вот для примера:

$string = preg_replace( '#\W*#siU', ',', $string );

или $string = preg_replace( '#[^абвгд...abcd...12345...]*#siU', ',', $string );

(модификатор U и убирал, и вставлял снова)

Что тут не правильно? А лучше сразу рабочую регулярочку.
PM MAIL   Вверх
skyboy
Дата 6.11.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



для работы с utf-8 нужен модификатор "u". "U" - это для установки жадности. регистр модификатора важен, да.
PM MAIL   Вверх
gendelman
Дата 7.11.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.4.2008

Репутация: нет
Всего: нет



Код

$string  = 'Шла  !  2128506  Саша --- по@Shosse {{}} и сосала ,.% 111';

$string  = preg_replace( '#\W*#siu', ',', $string );

Получается:
,,2,1,2,8,5,0,6,,S,h,o,s,s,e,,1,1,1,

Ничего не понимаю.
PM MAIL   Вверх
Pitlord
Дата 7.11.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



gendelman, \W* на \W+ замени. А чтобы кириллические символы тоже считались частью "слова" их придётся явно расписать, т.е. от \W отказаться: /[^A-ZА-ЯЁ0-9]+/ui

P.S. Хотя можете попробовать настроить локаль.

Это сообщение отредактировал(а) Pitlord - 7.11.2009, 23:42
PM MAIL   Вверх
gendelman
Дата 9.11.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.4.2008

Репутация: нет
Всего: нет



Pitlord, получилось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1452 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.