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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярное выражение не находит русские слова, в html-коде, полученном с помощью fgets  
V
    Опции темы
AmraKimmerian
Дата 2.11.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С помощью fgets получаю html-код страницы сайта. Если его рендерить в браузере или просматривать с помощью браузера исходный html-код, то все русские слова прекрасно отображаются.
Но регулярное выражение не находит эти русские слова в этом html-коде, сохраненном в переменной. С латинскими словами, цифрами и другими символами все в порядке - находит.

В чем может быть проблема? В кодировке текста?
Подскажите, пожалуйста.
PM MAIL   Вверх
bars80080
Дата 2.11.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



наверное, если вы приведёте код регулярки, помочь будет проще
PM MAIL WWW   Вверх
AmraKimmerian
Дата 2.11.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

  $t='/Регион/i';
   preg_match_all($t, $f2, $region);
   print_r($region);

где $f2 - html-код, полученный ос страницы сайта.
PM MAIL   Вверх
bars80080
Дата 2.11.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



в какой кодировке распарсиваемая страница?
в какой кодировке скрипт?
PM MAIL WWW   Вверх
AmraKimmerian
Дата 2.11.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ээээ, хммм..
исходный html-код в браузере показан в UTF-8. А мой php похоже ANSI.
Как же их уровнять? с помощью setLocale? Хм... а что там нада написать?
PM MAIL   Вверх
bars80080
Дата 2.11.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



есть iconv()
конвертнуть либо в одну, либо в другую сторону. конечно проще конвертнуть в ютф-8 слово "регионы". но если будете сохранять полученные данные у себя в базе, то всё равно придётся их приводить к общему на сайте виду
PM MAIL WWW   Вверх
AmraKimmerian
Дата 4.11.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



"...либо в одну, либо в другую сторону."
Честно говоря, не понял, что куда нужно конвертировать и разве возможно конвертировать в X то что уже в X?

Как точно узнать, из какой кодировки в какую нужно конвертировать?
Может ли тут помочь setLocale? Почему не использовать его?

Код

$a=iconv("ANSI","UTF-8","Регион");
echo $a;


Эхо ничего не выводит.
PM MAIL   Вверх
bars80080
Дата 4.11.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



ну, всё достигается опытным путём

я имел ввиду, что либо слово "регионы" преобразовать в ютф8, что проще, так как это одно слово
но это подстройка под чужой сайт. если же вы собираетесь полученные данные сохранять у себя, то всё равно придётся конвертировать в свою кодировку

может:
Код

$a=iconv("cp1251","UTF-8","Регион");
echo $a;

?
PM MAIL WWW   Вверх
AmraKimmerian
Дата 4.11.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



"ну, всё достигается опытным путём"
Да, действительно!

Код

$a=iconv("CP1251","UTF-8","Регион");
$t='/'.$a.'/i';
preg_match_all($t, $f2, $region);
print (iconv("UTF-8","CP1251", $region[0][0]));


Так все заработало: и находит и возвращает в читаемом виде.

bars80080, спасибо!
PM MAIL   Вверх
Pitlord
Дата 5.11.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(AmraKimmerian @  4.11.2009,  15:47 Найти цитируемый пост)
"ну, всё достигается опытным путём"
Да, действительно!

Надо просто в мануал смотреть: http://php.net/iconv

Во-первых, в данном случае Вам надо просто исходный PHP-файл сохранять в UTF-8, во-вторых, необходимо добавить модификатор "u" в выражение, т.к. Вы работаете с UTF-8.

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


 




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


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

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