file_get_contents() converts UTF-8 to ISO-8859-1

前端 未结 4 646
灰色年华
灰色年华 2020-12-15 02:10

I am trying to get search results from yahoo.com.

But file_get_contents() converts UTF-8 charset (charset, that yahoo uses) content to ISO-8859-1.<

4条回答
  •  轮回少年
    2020-12-15 02:57

    This seems to be a content negotiation problem as file_get_contents probably sends a request that only accepts ISO 8859-1 as character encoding.

    You can create a custom stream context for file_get_contents using stream_context_create that explicitly states that you accept UTF-8:

    $opts = array('http' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
    $context = stream_context_create($opts);
    
    $filename = "http://search.yahoo.com/search;_ylt=A0oG7lpgGp9NTSYAiQBXNyoA?p=naj%C5%A1%C5%A5astnej%C5%A1%C3%AD&fr2=sb-top&fr=yfp-t-701&type_param=&rd=pref";
    echo file_get_contents($filename, false, $context);
    

提交回复
热议问题