如何为我的cURL请求设置语言标题?例如现在我在荷兰得到了facebook.com的主页,可能是因为我的服务器是荷兰语/标头发送的默认语言?..
在这种情况下,我更喜欢荷兰语之前的英语,所以我尝试将curl设置为httpheader,但是我没有意义吗?我做错了什么或应该设置什么?
((zend符号)
CURLOPT_HTTPHEADER => 'Accept-Language: en-US;q=0.6,en;q=0.4',
提前感谢!
我到达此页面,正在寻找一种方法来传递语言标头以在命令行中卷曲。如果要在bash一线设置标题,请使用-H Accept-Language
$ curl -s -H 'Accept-Language: es' -XGET "http://www.google.com"
<!doctype html>
<html itemscope="" itemtype="http://schema.org/WebPage" lang="es-419">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta content="/logos/doodles/2016/united-states-elections-2016-4829342880235520-hp.gif" itemprop="image">
<meta content="Tu voz importa. �Encuentra tu casilla y vota! g.co/elections/dondevotar #Everyonein2016 #GoogleDoodle" property="og:description">
...
您必须在请求中添加标题选项。
您将有类似这样的内容:
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
.....
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
您要做的就是将此行添加到$ options数组中:
CURLOPT_HTTPHEADER => array("Accept-Language: en-US;q=0.6,en;q=0.4"),
此请求在以下位置正常工作:
curl -s -H 'Accept-Language: en-US,en;q=0.9,it;q=0.8' -XGET "http://www.google.com" | lynx -dump -stdin
curl -s -H 'Accept-Language: es-CO,es;q=0.9,it;q=0.8' -XGET "http://www.google.com" | lynx -dump -stdin
curl -s -H 'Accept-Language: pt-BR,pt;q=0.9,it;q=0.8' -XGET "http://www.google.com" | lynx -dump -stdin
我不了解优先级,但这是正常工作所必需的。关于优先级,可以在这里找到更多信息https://www.w3.org/International/questions/qa-lang-priorities.en