php sftp获取以前缀开头的文件
我想列出其他服务器目录中以前缀开头的所有文件 我使用ssh2_connect功能连接到另一台服务器,连接进行得很顺利,我能够获取所有文件,但我不确定如何仅从目录中获取所需的文件 例如:假设我需要以TP00*开头的文件* 出于某种原因,glob()不能与sftp一起使用 我的代码如下php sftp获取以前缀开头的文件,php,file,ssh,sftp,Php,File,Ssh,Sftp,我想列出其他服务器目录中以前缀开头的所有文件 我使用ssh2_connect功能连接到另一台服务器,连接进行得很顺利,我能够获取所有文件,但我不确定如何仅从目录中获取所需的文件 例如:假设我需要以TP00*开头的文件* 出于某种原因,glob()不能与sftp一起使用 我的代码如下 $connection = ssh2_connect('shell.example.com', 22); ssh2_auth_password($connection, 'username', 'password')
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$sftp_fd = intval($sftp);
$handle = opendir("ssh2.sftp://$sftp_fd/path/to/directory");
echo "Directory handle: $handle\n";
echo "Entries:\n";
while (false != ($entry = readdir($handle))){
echo "$entry\n";
}
$files = glob("ssh2.sftp://$sftp_fd/path/to/directory/TP00*.*");
感谢您的帮助
其他信息:
我给出的文件名只是一个例子。它并不总是从TP00开始。我需要动态匹配它,这取决于随机生成的ID,比如TP00、W0D0、YAL0等等(没有特定的模式,但我可以得到前缀)
我对glob()的尝试如下
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$sftp_fd = intval($sftp);
$handle = opendir("ssh2.sftp://$sftp_fd/path/to/directory");
echo "Directory handle: $handle\n";
echo "Entries:\n";
while (false != ($entry = readdir($handle))){
echo "$entry\n";
}
$files = glob("ssh2.sftp://$sftp_fd/path/to/directory/TP00*.*");
这没有返回任何文件。并且不会抛出错误。所以我不知道为什么它不起作用
我试图做的是在不遍历整个文件的情况下获取匹配文件的数组,因为文件夹包含的文件太多。您可以使用正则表达式:
TP00.*?\.*?$
用法示例:
if (preg_match('/TP00.*?\..*?$/i', $entry)){
// $entry is in the right format
}
另一个可能的解决方案可以在这里找到,作为一个答案是什么阻止了您使用客户端/php过滤器进行模式检查?我不知道怎么做……您向我们展示的代码中没有glob()。“不工作”是什么意思?它给出了一个错误?找不到数据?在角落里生气?如果解决方案解决了你的问题,请选择它作为解决方案