在DirectoryIterator中使用@符号和ftp流

时间:2011-06-02 12:25:06

标签: php ftp

我正在使用DirectoryIterator类列出ftp内容: $ a = new DirectoryIterator('ftp:// user:password @ host');

如果登录时出现“@”字符,则会收到错误消息: 无法打开目录:操作失败

我如何在登录时逃脱@符号?

我尝试: %40, + \ @

2 个答案:

答案 0 :(得分:2)

RFC1738要求像@这样的特殊字符应该在ftp://方案中进行urlencoded。因此,在密码片段中使用%40代替@是正确的。

但是你只想在主机名之前加上user:password@前缀。那些不需要逃避。并且它已经被ftp fopen url包装器原生支持:

$d = opendir("ftp://anonymous:nopwd@ftp.kernel.org/pub/");
print readdir($d);

以上ftp:// url也适用于我DirectoryIterator,但会给出一些模糊的警告和不同的结果。所以我先用原生函数进行测试。

答案 1 :(得分:1)

我不确定您是否可以将DirectoryIterator用作FTP客户端

您可能想了解如何使用ftp_rawlist获取给定目录的列表