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

 PHP.SU

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


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

> Описание: проблемы с кодировкой
nordghost
Отправлено: 19 Марта, 2014 - 16:37:20
Post Id



Посетитель


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


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




Файлы все в UTF-8,
файл parser.php
PHP:
скопировать код в буфер обмена
  1.  
  2. class ParseTags {
  3.                
  4.                 public $content;
  5.                
  6.                 public function setURL($url){
  7.                         $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
  8.                         $ch = curl_init( $url );
  9.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.                         curl_setopt($ch, CURLOPT_HEADER, 0);
  11.                         curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: text/xml;charset=\"utf-8\""));
  12.                         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  13.                         curl_setopt($ch, CURLOPT_ENCODING, "");
  14.                         curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
  15.                         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  16.                         curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  17.                         curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  18.                         $this->content = curl_exec( $ch );
  19.                         print_r($header = curl_getinfo( $ch ));
  20.                 }
  21.                 public function getTitle(){
  22.                         if(empty($result)){
  23.                     preg_match('%<title>(.*)</title>%', $this->content, $tmp);
  24.                                 if(isset($tmp[1]) && !empty($tmp[1])){
  25.                                         $result = iconv('windows-1251', 'utf-8', $tmp[1]);
  26.                                 }else{
  27.                                         for($i=1; $i<7; $i++){
  28.                                                 preg_match('%<h'.$i.'>(.*)</h'.$i.'>%', $this->content, $head);
  29.                                                         if(isset($head[1]) && !empty($head[1])){
  30.                                                                 $result = $head[1];
  31.                                                         }else{
  32.                                                                 $result = "Заголовок отсутсвует!";
  33.                                                         }
  34.                                         }
  35.                                 }
  36.                         }
  37.                         return $result;
  38.                 }
  39.  
  40.  
  41.  


Файл index.php

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.         <meta charset='UTF-8'>
  6.         <title>Парсер</title>
  7. </head>
  8. <body>
  9. <?php
  10.         include('parser.php');
  11.        
  12.         $tags = new ParseTags();
  13.         $tags->setURL('http://какой то сайт');
  14.         echo $tags->getTitle();
  15.          
  16. ?>
  17. </body>
  18. </html>
  19.  


Проблема в следующем, у некоторых сайтов я получаю вместо урл - кракозябры, например php.su парситься нормально, а вот хабр или новостная лига - кракозябры, в чём может быть причина, как решить проблемку?


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
DlTA
Отправлено: 19 Марта, 2014 - 18:00:59
Post Id



Постоянный участник


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


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




nordghost пишет:
я получаю вместо урл - кракозябры
а причем урл к титлу?
(Добавление)
nordghost пишет:
$result = iconv('windows-1251', 'utf-8', $tmp[1]);

))) а почему вы думаете что ВСЕ сайты должны быть в cp1251?
некоторые изначалью в utf-8 зачем результат перекодировать??
 
 Top
nordghost
Отправлено: 19 Марта, 2014 - 18:35:10
Post Id



Посетитель


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


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




Спасибо убрал, но теперь в некоторых сайтах вместо букв тупо знаки вопроса.


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
DlTA
Отправлено: 19 Марта, 2014 - 18:36:30
Post Id



Постоянный участник


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


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




ну так я ведь не говорил убирать, я намикал что стоило бы проверять кодировку страницы и уже по необходимости проводить конвертацию
 
 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