curl file_get_contents / get_meta_tags кодировка - PullRequest
1 голос
/ 07 марта 2011

, поэтому я использую CURL для замены функций file_get_contents и get_meta_tags в PHP:

<?php

class CURL{


    public static function file_get_contents($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);

        iconv("Windows-1252","UTF-8",$text);

        return $data;


    }


    public static function get_meta_tags($url){

        $html = self::file_get_contents($url);
        self::get_meta_tags_html($html);



    }

    public static function get_meta_tags_html($html){

        //parsing begins here:
        $doc = new DOMDocument();
        @$doc->loadHTML($html);
        //$nodes = $doc->getElementsByTagName('title');

        //get and display what you need:
        //$title = $nodes->item(0)->nodeValue;

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

        $return = array();

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

        return $return;

    }


}


?>

, но затем, когда я вызываю CURL :: get_meta_tags, на сайте с иностранными буквами, например на японском, он будет возвращать странные символы вместо японских букв, тогда как если я использую встроенный php get_meta_tags, он вернет правильный символ ...

как мне изменить этот код так, чтобы CURL :: get_meta_tags также возвращалиностранные символы правильно, как встроенный php get_meta_tags

1 Ответ

1 голос
/ 07 марта 2011

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

Если вы установите набор символов с помощью функции заголовка, он должен выглядеть правильно.

header('Content-Type: text/html; charset=utf-8');

Вы можете проверить, какой набор символов находится в метатеге, который вы получаете, если он был установлен, и использовать его.

...