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&form=YFNR&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() 的行为与浏览器不同