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

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

以及我如何获取数据

@H_404_2@$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会解决问题

@H_404_2@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

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

youtube.com

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

使用的功能

displayMeta

@H_404_2@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 *

@H_404_2@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相关文章