php – 通过curl方法获取url数据,在符号中产生意外结果

前端之家收集整理的这篇文章主要介绍了php – 通过curl方法获取url数据,在符号中产生意外结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有些时候通过curl方法获取url数据的问题特别是网站数据是阿拉伯语等其他语言
我的卷曲功能
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,CURLOPT_SSL_VERIFYPEER,false);

    $data = curl_exec($ch);
    $info = curl_getinfo($ch,CURLINFO_CONTENT_TYPE);

    //checking mime types
    if(strstr($info,'text/html')) {
        curl_close($ch);
        return $data;
    } else {
        return false;
    }
}

以及我如何获取数据

$html =  file_get_contents_curl($checkurl);
    $grid ='';
    if($html)
    {
        $doc = new DOMDocument();
        @$doc->loadHTML($html);
        $nodes = $doc->getElementsByTagName('title');
        @$title = $nodes->item(0)->nodeValue;
        @$Metas = $doc->getElementsByTagName('Meta');
        for ($i = 0; $i < $Metas->length; $i++)
        {
            $Meta = $Metas->item($i);
            if($Meta->getAttribute('name') == 'description')
                $description = $Meta->getAttribute('content');
        }

我正在从一些阿拉伯网站上正确地获取所有数据
http://www.emaratalyoum.com/multimedia/videos/2012-04-08-1.474873
当我给你这个youtube url
http://www.youtube.com/watch?v=Eyxljw31TtU&feature=g-logo&context=G2c4f841FOAAAAAAAFAA
显示符号..
我必须做什么设置来显示完全相同的标题描述.

介绍

获取阿拉伯语可能非常棘手,但它们是您需要确保的一些基本步骤

>您的文档必须输出UTF-8
>您的DOMDocument必须以UTF-8格式读取

问题

获取Youtube信息时,它已经以“UTF-8”格式提供信息,并且检索过程添加了额外的UTF-8编码….不确定为什么会发生这种情况,但是简单的utf8_decode会解决问题

header('Content-Type: text/html; charset=UTF-8');
echo displayMeta("http://www.emaratalyoum.com/multimedia/videos/2012-04-08-1.474873");
echo displayMeta("http://www.youtube.com/watch?v=Eyxljw31TtU&feature=g-logo&context=G2c4f841FOAAAAAAAFAA");

产量

emaratalyoum.com

التقطت عدسات الكاميرا حارس مرمى ريال مدريد إيكر كاسياس في موقف محرج قبل لحظات من بداية مباراة النادي الملكي مع أبويل القبرصي في ذهاب دور الثمانية لدوري أبطال

youtube.com

أوروبا.ففي النفق المؤدي إلى الملعب، قام كاسياس بوضع إصبعه في أنفه، وبعدها قام بمسح يده في وجه أحدبنات سعوديات: أريد "شايب يدللني ولا شاب يعللني"

使用的功能

displayMeta

function displayMeta($checkurl) {
    $html = file_get_contents_curl($checkurl);
    $grid = '';
    if ($html) {
        $doc = new DOMDocument("1.0","UTF-8");
        @$doc->loadHTML($html);
        $nodes = $doc->getElementsByTagName('title');
        $title = $nodes->item(0)->nodeValue;
        $Metas = $doc->getElementsByTagName('Meta');
        for($i = 0; $i < $Metas->length; $i ++) {
            $Meta = $Metas->item($i);
            if ($Meta->getAttribute('name') == 'description') {
                $description = $Meta->getAttribute('content');
                if (stripos(parse_url($checkurl,PHP_URL_HOST),"youtube") !== false)
                    return utf8_decode($description);
                else {
                    return $description;
                }
            }
        }
    }
}

* file_get_contents_curl *

function file_get_contents_curl($url) {
    $ch = curl_init();
    curl_setopt($ch,CURLINFO_CONTENT_TYPE);

    // checking mime types
    if (strstr($info,'text/html')) {
        curl_close($ch);
        return $data;
    } else {
        return false;
    }
}

猜你在找的PHP相关文章