Php 文件\u获取\u内容无法获取带有某些个人阿拉伯字符的链接

Php 文件\u获取\u内容无法获取带有某些个人阿拉伯字符的链接,php,Php,当我在浏览器中打开此链接时,它工作正常 但当我这么做的时候 $link = 'http://www.bama.ir/خريد-خودرو/?ac411129-3-0-0-0-0-0-900000000-1/کادنزا-كیا'; echo file_get_contents($link); 我明白了 ( ! ) Warning: file_get_contents(http://www.bama.ir/خريد-خودرو/?ac411129-3-0-0-0-0-0-9000000

当我在浏览器中打开此链接时,它工作正常

但当我这么做的时候

$link = 'http://www.bama.ir/خريد-خودرو/?ac411129-3-0-0-0-0-0-900000000-1/کادنزا-كیا';
echo  file_get_contents($link);
我明白了

    ( ! ) Warning: file_get_contents(http://www.bama.ir/خريد-خودرو/?ac411129-3-0-0-0-0-0-900000000-1/کادنزا-كیا):
 failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in 
我认为这是因为链接末尾的字符(如果我用拉丁字符替换它们,效果还可以)

是否有一个类似urlencode的函数用于文件内容

-----------------编辑--------------------------

$link = urlencode('http://www.bama.ir/خريد-خودرو/?ac411129-3-0-0-0-0-0-900000000-1/کادنزا-كیا');
echo  file_get_contents("$link");
结果

Warning: file_get_contents(http%3A%2F%2Fwww.bama.ir%2F%D8%AE%D8%B1%D9%8A%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88%2F%3Fac411129-3-0-0-0-0-0-900000000-1%2F%DA%A9%D8%A7%D8%AF%D9%86%D8%B2%D8%A7-%D9%83%DB%8C%D8%A7): failed to open stream: No such file or directory in C:\wamp\www\index.php on line 12

可以使用
urlencode
将链接转换为
file\u get\u contents
可以理解的字符串。例如:

echo file_get_conents("http://www.bama.ir/%D8%AE%D8%B1%D9%8A%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88/?ac411129-3-0-0-0-0-0-900000000-1/%DA%A9%D8%A7%D8%AF%D9%86%D8%B2%D8%A7-%D9%83%DB%8C%D8%A7");
嗯。你应该使用,但不为整个链接,为它的一部分只

$link = 'http://www.bama.ir/'
        . urlencode('خريد-خودرو')
        . '/?ac411129-3-0-0-0-0-0-900000000-1/'
        . urlencode('کادنزا-كیا'); 

// http://www.bama.ir/%D8%AE%D8%B1%D9%8A%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88/?ac411129-3-0-0-0-0-0-900000000-1/%DA%A9%D8%A7%D8%AF%D9%86%D8%B2%D8%A7-%D9%83%DB%8C%D8%A7

echo  file_get_contents($link);

使用@sectus-应该将其作为响应,因为这就是答案。@max,您应该仔细阅读文档。当对URL的查询部分中使用的字符串进行编码时,此函数非常方便。为什么不将URL传递到
urlencode
,然后将该字符串传递到
文件\u get\u contents
?@max:根据您提供的代码,我假定您正在硬编码此链接。我测试了示例中显示的代码,并且成功地从服务器获得了响应。你能首先验证你的代码是否被正确上传吗?是的,我尝试过你的代码,它工作正常,但当我这样做时,我会出错,请查看我的编辑。。。我不知道为什么它编码的http部分@麦克斯:是的,我刚刚意识到问题所在。我认为您可能需要使用
parse_url
,并在对字符串进行编码后再次手动重新组合urlhttp://.your 编码结果与我得到的结果非常不同!你是怎么做到的?即使我删除了http部分,它也不起作用。。。在我的url中,
.ir
之后正好有
%2F