Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Появляются лишние символы при чтении страницы с другого сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Надо прочитать и отпарсить страничку с другого сайта - почему-то появляются лишние символы. Как с этим бороться?
Babutta
Отправлено: 20 Апреля, 2009 - 18:21:04
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




Есть задача перенести довольно большое количество информации с одного сайта на другой (с разрешения владельцев Улыбка ). Вручную долго, потому хочу написать скрипт, который будет читать странички с требуемого сайта, парсить их, и заносить информацию в бд. Но столкнулся со следующей проблемой - читаю страница и в полученном тексте появляются разные символы и наборы символов (букв, цифр), вроде b4e, 12e, 239, 70, f и т.д. Причём при разных запусках скрипта, появляются разные символы и в разных местах. Подскажите, пожалуйста, почему так происходит и как с этим бороться?

Вот код ф-ии, которая читает страницы:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function read_url($path, $cookies = "")
  4. {
  5.         $path = parse_url($path);
  6.  
  7.         if (!$path) return false;
  8.  
  9.         $request = "GET $path[path]" . ((strlen($path['query']) > 0) ? "?" . $path['query'] : "" ) .
  10.                                 " HTTP/1.1\r\n" .
  11.                                 "Host: $path[host]\r\n" .
  12.                                 "Connection: close\r\n" .
  13.                                 (($cookies != "") ? "Cookie: $cookies\r\n\r\n" : "\r\n");
  14.                
  15.         $socket = fsockopen($path['host'], 80, $errno, $errstr, 29);
  16.  
  17.         if (!$socket) return false;
  18.  
  19.         fwrite($socket, $request);
  20.  
  21.         $data = "";
  22.  
  23.         while (!feof($socket))
  24.         {
  25.                 $data .= fread($socket, 4096);
  26.         }
  27.  
  28.         fclose($socket);
  29.  
  30.         $data = substr($data, strpos($data, "\r\n\r\n") + 4, strlen($data) - strpos($data, "\r\n\r\n"));
  31.  
  32.         return $data;
  33. }
  34. ?>


Это относится именно к страницам сайта, если с помощью этой ф-ии читать картинки, то всё в порядке - нормально отображаются и скачиваются.
(Добавление)
Всё, сам разобрался. Надо было не



писать, а



Может кому пригодится Улыбка

(Отредактировано автором: 20 Апреля, 2009 - 19:19:32)

 
 Top
Гость
Отправлено: 20 Апреля, 2009 - 19:09:37
Post Id


УДАЛЁН










Вообще дело в различии протоколов - если посмотреть результат что возвращает telnet по можете увидеть надписи типа 16d и 0 - а если в функциях обработки запроса не совпадает протокол вот они и остаются



И еще кстати можете глянуть функцию http://forum.php.su/topic.php?fo...1&topic=2031 - добавить куки не проблема туда

(Отредактировано автором: 20 Апреля, 2009 - 19:20:37)

 
 Top
EuGen Администратор
Отправлено: 22 Апреля, 2009 - 11:27:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если с разрешения владельцев, то почему бы не попросить базы данных и тексты самих страниц? )


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB