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 :: CURL, если сайт не с кодировкой UTF8

 PHP.SU

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


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

> Без описания
antobra
Отправлено: 02 Ноября, 2012 - 13:40:30
Post Id


Посетитель


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


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




Коллеги, приветствую!

Возможно кто-то знает пути решения проблемы связанной с CURL и сайтом без UTF8.

Использую следующий класс для парсера нужной страницы

PHP:
скопировать код в буфер обмена
  1.  
  2. class BotLib {
  3.        
  4.         var $curl;
  5.        
  6.         /*
  7.          * CURL options for session
  8.          */
  9.         var $userAgent;
  10.         var $contentEncoding;
  11.         var $connectTimeout;
  12.         var $followLocation;
  13.         var $returnTransfer;
  14.         var $cookieFile;
  15.         var $cookieSession;
  16.        
  17.         public function __construct() {
  18.                 if(!$this->curl = curl_init()) {
  19.                         $this->_crash("Can't initialize CURL library!");
  20.                 }              
  21.         }
  22.        
  23.         public function setCurlOptions($userAgent       = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
  24.                                                                       $contentEncoding = 'gzip,deflate',
  25.                                                                       $connectTimeout  = 100,
  26.                                                                       $followLocation  = true,
  27.                                                                       $returnTransfer  = true,
  28.                                                                       $cookieFile      = 'cookiefile',
  29.                                                                       $cookieSession   = true) {
  30.                 $this->userAgent       = $userAgent;
  31.                 $this->contentEncoding = $contentEncoding;
  32.                 $this->connectTimeout  = $connectTimeout;
  33.                 $this->followLocation  = $followLocation;
  34.                 $this->returnTransfer  = $returnTransfer;
  35.                 $this->cookieFile      = $cookieFile;
  36.                 $this->cookieSession   = $cookieSession;                               
  37.         }
  38.        
  39.         public function _getRequest($url) {
  40.                 curl_setopt($this->curl, CURLOPT_URL,            $url);
  41.                 curl_setopt($this->curl, CURLOPT_COOKIESESSION,  $this->cookieSession);
  42.                 curl_setopt($this->curl, CURLOPT_COOKIEFILE,     $this->cookieFile);
  43.                 curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, $this->returnTransfer);
  44.                 curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, $this->followLocation);
  45.                 curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
  46.                 curl_setopt($this->curl, CURLOPT_ENCODING,       $this->contentEncoding);
  47.                 curl_setopt($this->curl, CURLOPT_USERAGENT,      $this->userAgent);
  48.                
  49.                 if($a = curl_exec($this->curl)){
  50.                         return $a;
  51.                 } else {
  52.                         return false;
  53.                 }
  54.         }
  55.        
  56.         public function _postRequest($url, $params) {
  57.                 curl_setopt($this->curl, CURLOPT_URL,            $url);
  58.                 curl_setopt($this->curl, CURLOPT_USERAGENT,      $this->userAgent);
  59.                 curl_setopt($this->curl, CURLOPT_POST,           TRUE);
  60.                 curl_setopt($this->curl, CURLOPT_COOKIESESSION,  $this->cookieSession);
  61.                 curl_setopt($this->curl, CURLOPT_COOKIEFILE,     $this->cookieFile);
  62.                 curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, $this->returnTransfer);
  63.                 curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, $this->followLocation);
  64.                 curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
  65.                 curl_setopt($this->curl, CURLOPT_ENCODING,       $this->contentEncoding);
  66.                 curl_setopt($this->curl, CURLOPT_POSTFIELDS,     $params);
  67.                
  68.                 if($a = curl_exec($this->curl)){
  69.                         return $a;
  70.                 } else {
  71.                         return false;
  72.                 }              
  73.         }      
  74.  
  75. }
  76.  


Это довольно старый и распространенный скрипт в интернете. Страничку с UTF-8 он забирает без проблем, но если кодировка win-1251, то символы становятся не понятными. Как можно решить проблемку?
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Ноября, 2012 - 13:47:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




PHP:
скопировать код в буфер обмена
  1. if($a = curl_exec($this->curl))
  2. {
  3.           return iconv('cp1251', 'utf8', $a);
  4. }
  5. else
  6. {
  7.           return false;
  8. }

(Добавление)
Или:
PHP:
скопировать код в буфер обмена
  1.  
  2. $BotLib = new BotLib();
  3. $getRequest = _getRequest($url);
  4. $getRequest = iconv('cp1251', 'utf8', $getRequest);
  5.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB