我想做的是得到网页和水蛭从它的一些信息。该代码工作了一段时间,但现在它返回一些不能在浏览器中显示的内容。
$html = file_get_contents("http://thepiratebay.com/");
echo $html;有一段时间,这段代码只是镜像了我请求的网页,但现在我得到了以下内容:
‹½[{sÛ¸ÿ;ù°f®¶ç,ÊzØIlI7–±ÇQcçÕ›+"!EÐ(EIóÝ»H ©¯SöæbìþvÅbABÝ‹wç_†—È3¿ÿ¼+ÈÇÁ¤W#AMvûÏüבãáˆÑ«Åb\YKš>é_°Eà3ì¢YÌ©s€flN ?@<“ÎÆb#²ƒ<‚†4‚ ^¢º"L°¿.w9°q"©OI ЀŠE²È© ݆3t @~¯æîD4”5ä°@G¯VR'„ÙÅñ CD¬M )G¢¼ŠV-¯Ý”,,r¹¡Ú,l <§hD…Ðüh³ÀW:'&$ªã0ô©ƒ¥½ºÝÄÚ‡úÉa¾Èš²Îi†'Q2U¡@Ñ cŸÔ¥õ9‰è8Á0]¾ÿBØìæüˆ>ùÃÛ8¿¿¼>{õz~öáÍ·«k¯ýéfÑê|s ÄN½þ;#_ ›KôêMU-> ¦0˜~¯ÆÅÒ'Ü# ò"2îÕ\ºÓp8¯dÑ Ä‚bÍàÖ“Žxä¬z?ò†tä#{Ì"X£ÛÐ=Su~'KÇÔë á¯h1Ã40ô0y ޝ†Ä2„±4¦¨ÁBèVÃQý:ó3UK‘•Ÿ÷j÷Š´á‘ydìЬåek8•. 1ž ìË»’ü|žççsûþ²$0Êó#ûî]Yþýƒ <¿‹óü.¶/Þ”äÓ<ÿ˜ÚW7%ù)ÏóSnßÜ—µß/°ß·ïnËÚO ì'öEÙù£¢@aß<”õ¿û ·/ËÚà‡Â–ÅßÂ?x_vþ£‚ù쫲üaÁü…¾=,;^œç÷bûúCÙñ/À'¾ýº¬þ¢À~Ùeù£ý£Ø~_V>-ˆ?Sû¾ìúu Ö¿ƒËûŸW°~|DÜc‹ŠðŽsx×8p=â»Õà½Èã]Tì¬/‹!«×W9ÐöE%H¯òH•Ų¶¹¹ïϪÁjb}ŸhàV4qms³]G}‹+ÙÞÛæ^»Žøáîæs5mU.þ¶Ü6oÞÝ£=:Änƒ=ýjð·áŸnÄh5V›ÉÆ:ªZ§èÝÏOÓÿ%lÇXª¯åïj@šëÔ°’”c¬Ë©¢Ù1dfÔý×j :9¨ÏƒwŸÛLJÕÀåà>QZ ÔqªÊØÒ1‹ïÿT:Fz‘WM:F4Iá*ÛîŒ2dQP Fs £Ò\ðȈ"k•[ŽŒ’ ©#â¨*;›p•ÿ##š$X§òGFP1§¯ºóØ‘±ÜÄÊVÛ±±Ú*i®ƒ€E—õÊ^$.…;g3êT„ÖΡU¹ÚŽÕ¶²nN¢ŠÐŽòÖyKNG~EæÎŸ¦Žù¼ÛÐW[º#æ.ááÒ9¢n¯6SU¼f¿‹S€µ—Ë›ßâ»<ÄAÚm(b·áˆÒ2¬Qà)-]¿É "Lúé÷þäúÈÑtôïUוZœ#Éê·ªf¼µþAjS('"´grÞ«ª!gƒ°UŽ˜¯){=‘–4*S72ÎäM´zlGbኅH 7‘#en0#,V²´{fW?’h«=á>¡†>vˆÇ|—D¹66fNÌÁñŸbwOyÒi},8‚¾:™räÂ2*ÙÀËI¿ÑdrnHÉŠJƳg:ŽôÅOˆð¤ÑX,Öì”áØrجúñ„¼áÓ)±B/üMÉÞ¿´Ï~i]Áÿ‹öoxžúxÉbÑÅB°ÀvXE—^dKÞQ¬û&s'TÝa>‹¸ã˜ŸN<ÅYCêRO¯¶ ®ðNÀE¯§‘Í'-Y†NÄ|X“òÖ«!e܈Ej¾Ã¾Ï.äX.åÇñ˜È{Ez Ô˜¤#)-ä0 bAD15ê&V ¶zÌ90ë–º¢Öµ¥5äbëqäg#º1:IA¾ ˜:u‘ð(G!ÌŒe%ÍæžÀ@Éxai,éÜ%W¡vÆq †oÏ=àÔÝÿ>ÇzäãGÞs-X—>Œ#,øÁòOîÀÌ=¾ÿûáa¯ñ/¢%{®å3š÷Û• »'êÁwOéxoÇ”5XÞ¸{€µÿ]8“6~úÈ-XvÔ•é\᯻0°~„\Á–9¤0› —[\*[jjÄs‰^G"1 ÀCö´Eû§?~ì¹°Îfê~Ý®„](¥“±Aû§ë7ŲUÒX\_…ÝF˜Ž7Ú>ßüdÁü—O x÷ѱDrcÙÊÈ©'ºïퟦñ\Ú™ŽØWp!Y‚ í݆ø)¨úˆhÂ>e°:„aÝCé ‹™Ñl‹}%¶¼þddÂ/6à纇„OŠ%à•Ø2Ö›oyM-Èæ „ë1P¥2CÈ.¡Š>Ș:D:Lt©DR,%w\žjhF“jhF”和š%žjhF,š%žjhF,š%žjhF“jhF”和š%ž“b t%6_´0y<šoâÉÞíTl”(b t%6_´0y<šoâÉÞíTl)dμ!r§A·±3!u%w“G]W^L Qíà‰œ‘j=t†”†“²NMÕÃÖìú5#cöˆ¿ÊЮٹÝd7”ó4,“ù.d蔥ÈOgiŽ)ýf6ÉËÖôùN–ME‡’(Oê9aiË6q°ÃˆyN\ľɒäLÐN½ŽrÒŒÜU„#—yF†®ZÀ<♡ùgZë+ò6AIJ§Îu:Ú[…pÃä=°ù¡Ý·È;.%Gk?k†ü)$w,{H x?o Go±ón欧元lQ*áü3M 3M~…‡íŠü!…在聚-!4(“‰8.…) Aq‘š’š‘”cK;q j.5-8“Aq.5-8”Aq j-8“Aq”{u nZ/:Û“fóîh0ùøòéͧN+ÝÿóóÕìñb°|d¥Œ?ë£ôÓº©¿ÏÌݘ¯"éûûûìdÌC$›’—jÐb¾IKÂSá~ã¤\s>½IšWˆC†ƒ¡’$1úAq 3:F{,…]h§^è÷Á¿ÂìDlIMQÕOŸ?Kß(=ê}ÃtLϨ–Ì´¸õd‘ä~;XêŒf%‡ÀÞûœèuzj'š"º:d5¨<×ðÃÐ9ÉÊ¿oWÖ‚óì†ôãùêp ~0 6 0 o,ˆŸOŒ8`
我不明白。
发布于 2014-05-21 19:54:32
您可以使用curl来获取数据,correctly.curl比file_get_contents()快得多
getContents返回获取的数据。
function getContent($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0",
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$result= curl_exec($ch);
curl_close($ch);
return $result;
}发布于 2014-05-21 19:51:51
这是因为GZIP压缩是打开的。您需要使用CURL或定义http上下文,这样它就会发送accept-encoding: gzip;q=0,deflate,sdch头.
会是这样的:
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-Encoding: gzip;q=0,deflate,sdch\r\n"
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://www.thepiradebay.com', false, $context);发布于 2014-05-21 19:56:11
试试这个:
function get_url($url) {
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-Language: en-US,en;q=0.8rn" .
"Accept-Encoding: gzip,deflate,sdchrn" .
"Accept-Charset:UTF-8,*;q=0.5rn" .
"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.4rn"
)
);
$context = stream_context_create($opts);
$content = file_get_contents($url ,false,$context);
foreach($http_response_header as $c => $h){
if(stristr($h, 'content-encoding') and stristr($h, 'gzip')){
$content = gzinflate( substr($content,10,-8) );
}
}
return $content;
}
echo get_url('http://www.thepiratebay.com/');https://stackoverflow.com/questions/23792486
复制相似问题