Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 10
DelphinPRO Сообщение 10/02/2010 16:47 Копия темы
Помогите с php разобраться вот кусок кода:

$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
$ch = curl_init('www.site.ru/');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
$html = curl_exec($ch);
curl_close($ch);

$pos = strpos($html, '<h1 >Каталог</h1 >');

$pos всегла равен 0, т.е. строка '<h1 >Каталог</h1 >' не находится. Вопрос – Почему? (Строка в выдаче заведомо есть)
Сервер www.site.ru выдает результат в кодировке Windows-1251
мой файл скрипта parser.php тоже в кодировке Windows-1251
RiDDi Сообщение 10/02/2010 16:57 Копия темы
В $html есть данные?

точно там пробелы после h1?
barmaley-exe Сообщение 10/02/2010 17:01 Копия темы
Пробелы, скорее всего, были поставлены, чтобы парсер не съел теги.
barmaley-exe Сообщение 10/02/2010 17:03 Копия темы
Если strpos возвращает 0, это не значит, что строка не найдена. А вот если возвращает FALSE, тогда да действительно не найдено.
DelphinPRO Сообщение 10/02/2010 17:06 Копия темы
В $html данные есть
Если сделать echo $html; то выводится страница
Проблема в том что из этой переменной не могу достать ни одной подстроки с русскими буквами. К примеру $pos = strpos($html, '<h1 >'); – в $pos значение отличное от нуля. Подозреваю, что проблема в кодировках, но не врублюсь что именно.

зы. <h1 > – в реальном коде пробелов нету, это фриланс воспринимает h1 как тег форматирования, вот и написал с пробелами
romalkavian Сообщение 10/02/2010 17:07 Копия темы
сделай распечатку $html, если там точно есть искомая строка – знач проблема с кодировкой, скорее всего. Смотри, какая локаль и все-такое. Честно говоря, не очень хорошо все это помню, искать лениво – но те же функции типа ucwords, например, в некоторых случаях не пашут с кириллицей и нужно спецом настраивать. Так что дай для начала сюда инфу, какая локаль у тебя)
RiDDi Сообщение 10/02/2010 17:10 Копия темы
Ну да )
RiDDi Сообщение 10/02/2010 17:15 Копия темы
аа, ну и отлично )

в какой кодировке данные в $html?

Может попробовать указать в CURLOPT_HTTPHEADER кодировку?

Пол года уже не работаю с курлом (пишу все парсеры на си или яве), но помню, что там с кодировками все как часы )

и setlocale(LC_ALL, 'ru_RU.CP1251'); попробуйте
DelphinPRO Сообщение 10/02/2010 17:19 Копия темы
а ларчик просто открывался Всем спасибо за внимание, проблема решена.
Создал новый файл, копипастнул туда весь скрипт и сохранил в Windows-1251
Все заработало как надо.
В чем была суть проблемы не понял, наверное Notepud++ косячит при конвертировании из одной кодировки в другую
RiDDi Сообщение 10/02/2010 17:20 Копия темы
))
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"