【问题标题】:file_get_content() does not work with url that contains utf-8 charactersfile_get_content() 不适用于包含 utf-8 字符的 url
【发布时间】:2016-10-25 00:30:19
【问题描述】:

嗯,我正在尝试从某个网页获取 HTML。这个网页的 URL 中有 UTF-8 字符,PHP 给了我这个错误:

警告: 文件获取内容(http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-é-uma-cidade-estado-planejada-para/): 无法打开流:HTTP 请求失败! HTTP/1.1 404 未在 C:\xampp2\htdocs\test\index.php 在第 102 行

第 102 行是:

if($content = file_get_contents($this->link)){

我确信问题实际上出在 URL 中的 'é' 上,因为当我尝试将此函数与其中不包含 UTF8 字符的 URL 一起使用时,它可以工作。

更具体地说,有效的不带 UTF-8 字符的 URL 是:

http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/os-nossos-ancestrais-dedicavam-se/

有人知道我能做什么吗?

提前致谢!

【问题讨论】:

标签: php utf-8


【解决方案1】:

嗯,答案比我想象的要简单。

而不是使用原始 URL

http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-%C3%A9-uma-cidade-estado-planejada-para/

我使用rawurlencode 方法仅对 UTF-8 字符进行编码,例如:

$url = "http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-" . rawurlencode("é") . "-uma-cidade-estado-planejada-para/";

现在可以了!

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多