PHP file_get_contents 以不同的语言显示内容

Posted

技术标签:

【中文标题】PHP file_get_contents 以不同的语言显示内容【英文标题】:PHP file_get_contents displaying content In different language 【发布时间】:2015-11-09 01:53:54 【问题描述】:

为这个模糊的标题道歉,但我不知道如何更好地描述它,并且已经尝试了几个小时来解决这个问题。搜索了谷歌,但找不到相关答案,也在这里搜索但没有运气 - 我可能正在搜索错误的东西。

这始于从 Bing 中提取 RSS 提要的问题 - 这很有效 在其他网站上很好,但在我正在构建的新网站上,它带来了 新闻结果返回德语。

对于这些网站,我使用的是 Godady,因此将相同的脚本复制到其他 Godady 我拥有的托管帐户以及 Bing RSS 提要的结果应以英文返回。在新帐户上但是新闻 以德语显示。

所以在经历了很多事情以消除问题之后 我决定使用 file_get_contents 做一个简单的测试。

在网络空间中没有其他内容的新托管空间上,我创建了一个 php 文件里面有这个:

 <?php
 $homepage = file_get_contents('https://www.bing.com/news/search?q=cars&form=YFNR&format=RSS');
 echo $homepage;
 ?>

当我在新帐户上运行上述内容时,它会以德语显示页面结果,而它应该是英语。

我将上面相同的测试脚本复制到另一个最近的 Godaddy 帐户 它可以正常工作并以英文显示结果。

在浏览器中使用 BING URL 时以英文显示新闻

我一直在寻求 Godaddy 的支持,他们已经尝试过,但我认为这是在试图暗示这是我的脚本。这就是为什么我只是尝试了上面的 sn-p 来排除其他一切。

顺便说一句,我使用的所有主机帐户都在美国

所以问题是什么会导致简单的 file_get_contents 将输出结果翻译成不同的语言?为什么不同帐户的两个结果不同?

很抱歉发布的时间太长,但希望它解释得足够充分 - 请不要投票;-)

【问题讨论】:

您是否可以通过命令行访问获得德国响应的服务器?你可以执行curl -v https://www.bing.com/news/search?q=cars&amp;form=YFNR&amp;format=RSS 并发布结果吗? 感谢您的回复 - 非常感谢 - 只是检查一下基本的 Godaddy 主机是否具有命令行访问权限。 你也可以使用php的exec () 使用必应 API。 AFAIK 有一个 market 参数用于语言/区域设置。 似乎无法进入命令行 - exec 不确定语法,但将其放入 php 文件中: exec("curl -v bing.com/news/search?q=cars&form=YFNR&format=RSS"); 并没有出现任何内容也使用了 echo结果相同 【参考方案1】:

您可能知道,必应(以及几乎所有多语言网站)使用 cookie 或浏览器设置来分发适当的内容。

我怀疑你的情况是你主机的语言设置。

您可以尝试更改脚本的标题以接受英文内容:

$opts = array(
  'method' => "GET",
  'https'=>array(
    'header'=>"Accept-language: en\r\n"
  )
);

$context = stream_context_create($opts);

$homepage = file_get_contents('https://www.bing.com/news/search?q=cars&form=YFNR&format=RSS', false, $context);

问候,

【讨论】:

我认为这可能是这样的,但在其他让我失望的 Godaddy 帐户上确实可以正常工作。我已经在上面尝试过你的,它仍然以德语显示

以上是关于PHP file_get_contents 以不同的语言显示内容的主要内容,如果未能解决你的问题,请参考以下文章

PHP file_get_contents() 的行为与浏览器不同

file_get_contents 通过 php 失败,通过浏览器工作

PHP cURL 与 file_get_contents

php中图片以字节流的形式直接发送七牛

php获取网页内容的方法--(转载)

php如何获取文件内容?