Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
Есть ли решение?
Все строковые функции и регулярные выражения достаточно сильно зависят от кодировки в которой трактуются данные из их внутреннего представления - по этой причине при работе с нми необходимо не только проверить чтобы строковая константа шаблона и сама проверяемая строка были в одной и той же кодировки - но и функция регулярных выражений также трактовала их в заданной правильной кодировке
Для решения вы можете попробовать несколько вариантов - например с помощью функций mb_convert_encoding или iconv преобразовать строку в однобайтовый вид и производить обычное сравнение - или же воспользовать функций http://www.php.su/functions/?mb-regex-encoding для указания кодировки в которой будут трактоваться шаблоны регулярных выраженй Также можете попробовать добавить модификатор /u к соответствующему шаблону
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 30 Июля, 2010 - 19:15:48
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Чтоб из этой строки получить
Viper пишет:
Hello world
, можно preg_match(/\{en\}(.*)\{\/en\}/s, $str, $m) и поискать его в $m;
Прег-фильтр - он всё-таки как реплейс, но с маленьким отличием. (Добавление)
Можно, может быть, и так
reg_filter('/$.+\{en\}(.*)\{\/en\}.+$/s', '\\1', $data); Но думаю, цель была не та)
JustUserR
Отправлено: 31 Июля, 2010 - 02:44:27
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
Прег-фильтр - он всё-таки как реплейс, но с маленьким отличием.
Судя по приведенному результату выполнения фильтрации текста в строке - функция preg_filter вообще проигнорировала текста находящийся в русской кодировке Как самый простой вариант проверки можно сохранить исходный код PHP-скрипта в однобайтовой кодировке windows-1251 - а также установить ее же для внутреннего представления данных и для строки по которой осуществляется шаблонная фильтрация
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 31 Июля, 2010 - 08:27:36
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
JustUserR, судя по приведенному результату, он и отработал как preg_replace
JustUserR
Отправлено: 31 Июля, 2010 - 16:12:59
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
JustUserR, судя по приведенному результату, он и отработал как preg_replace
В таком случае можно воспользоваться дополнительной функией обратного вызова - которая будет обрабатывать одну или все найденные замену и сохранять ее в заданную переменную - полученный результат по сути и будет искомой фильтрацией строки по найденным вхождениям по шаблону
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 31 Июля, 2010 - 16:24:36
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Чего?? preg_match можно воспользоваться и всё.
JustUserR
Отправлено: 31 Июля, 2010 - 18:04:03
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
Чего?? preg_match можно воспользоваться и всё.
Имелось в виду что если в функцию обратного вызова передавать аргумент по ссылке - то можно сразу модифицировать исходную строку и оставить в ней только нужные данные согласно шаблону фильтрации
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 02 Августа, 2010 - 09:08:15
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Почитал, подумал, попробовал... сделал на _match ;)
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
Почитал, подумал, попробовал... сделал на _match ;)
Вообще если структура анализируемого текста у вас в точности такая же как в приведенном вами сообщении - то можно сделать разбор на основе обычных строковых функций типа substr и strpos - учитывая что нужно искать только два вхожденя соответствующие искомому языку и располагаемые последовательно без идентичных вложенных тегов - то такой подход будет работать даже быстрее
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 04 Августа, 2010 - 08:05:49
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
JustUserR пишет:
учитывая что нужно искать только два вхожденя соответствующие искомому языку и располагаемые последовательно без идентичных вложенных тегов - то такой подход будет работать даже быстрее
да вот в том то и дело что кол-во тэгов языка может быть n и заранее не известно. просто не вижу другого выхода создания многоязыкового контента без создания сотен полей для каждого языка. на страницу в около 5 preg_match'ей будет.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.