我正在使用DirectoryIterator类列出ftp内容: $ a = new DirectoryIterator('ftp:// user:password @ host');
如果登录时出现“@”字符,则会收到错误消息: 无法打开目录:操作失败
我如何在登录时逃脱@符号?
我尝试: %40, + \ @
答案 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获取给定目录的列表