Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php sftp获取以前缀开头的文件_Php_File_Ssh_Sftp - Fatal编程技术网

php 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')

我想列出其他服务器目录中以前缀开头的所有文件

我使用ssh2_connect功能连接到另一台服务器,连接进行得很顺利,我能够获取所有文件,但我不确定如何仅从目录中获取所需的文件

例如:假设我需要以TP00*开头的文件* 出于某种原因,glob()不能与sftp一起使用

我的代码如下

$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()。“不工作”是什么意思?它给出了一个错误?找不到数据?在角落里生气?如果解决方案解决了你的问题,请选择它作为解决方案