2012-06-01 2 views
0

Это видео с ведьмой я хочу, чтобы получить ог: НазваниеDOMDocument набор символов выпуск

http://www.youtube.com/watch?feature=player_embedded&v=A683kmvRH_8

Php код

function file_get_contents_curl($url){ 
      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_HEADER, 0); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
      $data = curl_exec($ch); 
      curl_close($ch); 
      return $data; 
     } 

     $html = file_get_contents_curl($pageurl); 

     $doc = new DOMDocument(); 
     @$doc->loadHTML($html); 
     $nodes = $doc->getElementsByTagName('title'); 

     $titleBackUp = $nodes->item(0)->nodeValue; 

     $metas = $doc->getElementsByTagName('meta'); 

     for ($i = 0; $i < $metas->length; $i++){ 
      $meta = $metas->item($i); 
      if($meta->getAttribute('name') == 'title') 
       $title = $meta->getAttribute('content'); 
     } 

Название является Мастило - В ръцете ти е най-добре [HQ] и я получаю

Dd ° ÑÑиР»Ð¾ - Ð ÑÑÑÐμÑÐμ Н.Д. дМ Ð½Ð ° й-Ð'оР± ÑÐμ [HQ]

Стараюсь также с

curl_setopt($ch, CURLOPT_ENCODING, "UTF-8"); 

но доцент работу.

Старается с html_entity_decode но не работает

+0

Вместо '@ $ doc-> loadHTML()' вы можете использовать 'libxml_use_internal_errors (true)' и 'libxml_clear_errors()' –

+0

Что такое кодировка страницы, на которой вы печатаете результаты? –

+0

Название вставляется в базу данных и имеет utf-8 ecnoding. Страница в witch i print the result имеет \t html5 – grape1

ответ

1

Это может произойти, если сам документ не содержит <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> тега.

Вы можете попробовать одно из следующих действий:

  1. Пусть DomDocument нагрузку, HTML непосредственно с сервера (т.е. использовать ->loadHTMLFile())

  2. Приставка документ с упомянутой выше мета-тег перед запуском через ->loadHTML() ,

Например, вы могли бы сделать это:

libxml_use_internal_errors(true); 
$doc->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . $html); 
libxml_clear_errors(); 

Это хак, чтобы LibXML знать, что он должен читать данные UTF-8 ... это невозможно передать эту кодировку через ->loadHTML().

+0

Я смущен ... – grape1

+0

@HmmlollolGadnqri ... о? с какой частью вам нужна помощь? Я обновил ответ, надеюсь, что это поможет. –

+0

Вы предлагаете изменить @ $ doc-> loadHTML ($ html); to @ $ doc-> loadHTMLFile ($ html); и как сделать второй шаг. Также, как изменить код с помощью libxml_use_internal_errors (true) и libxml_clear_errors() – grape1

Смежные вопросы