替代glob php

bnlyeluc  于 2023-06-04  发布在  PHP
关注(0)|答案(3)|浏览(313)

我在找一个可以代替glob的函数。我得到了这个,它工作得很完美。

<?php
$tipof = 'FACTURA';     
$cliente = '455928';
$files = glob("$cliente-$tipof*.pdf");
foreach ($files as $rows): ?>
    <td align="center">&nbsp;<?php echo end((explode('-', str_replace('.pdf','', $rows)))); ?> &nbsp;</td>
    <td align="center">&nbsp;<?php echo $cliente ?> &nbsp;</td>
    <td align="center">&nbsp;<?php echo "<a target=_blank href=\"".$rows."\">Ver</a>"; ?> &nbsp;</td>
    </tr>

文件在项目文件夹中,但如果文件在URL中,我该怎么办?例如像这样:http://192.168.0.196:8080/pdf/
在URL中,我文件是455928-FACTURA-A106-8694-20171019.pdf
谢谢!

lxkprmvk

lxkprmvk1#

您不能通过HTTP执行globglob依赖于能够读取目录中所有文件的列表。HTTP没有“目录”的概念,也没有枚举路径部分的标准化方法。它只处理 * URL *。URL甚至不必以任何方式与 * 文件 * 相对应。URL http://example.com/foo/bar * 可以 * 由一个文件支持,或者服务于此URL的Web服务器可以根据它的感觉动态创建响应。没有办法枚举 * 所有可能的URL *,当这样的URL可以只是在飞行中,因此没有办法glob通过HTTP。

  • 如果 * 您的Web服务器碰巧返回URL http://192.168.0.196:8080/pdf/上的目录列表,您可以尝试解析它。
ztigrdn8

ztigrdn82#

如果文件存储在另一台机器上,无法访问该机器的文件系统,我会创建某种端点(PHP就可以了),并通过客户端 AJAX 调用端点,或者通过PHP服务器端的CURL获得响应,这取决于您的应用程序需要。end-point会将结果公开为json,供您的脚本使用。我不会使用ftp或其他方式来暴露文件系统。如果在浏览器中使用CORS,请注意。

brccelvz

brccelvz3#

glob替代

所以屏幕抓取不是你正在看的东西。在PHP世界中,有几个东西可以打开文件夹目录并找到其中的所有项目。

1

opendir为您提供一个句柄,您可以readdir获取文件夹的内容,无论是文件还是子文件夹。

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}

DirctoryIterator

DirectoryIterator类让你做更多的事情,但基本上是一个迭代器,你可以在foreach()设置中使用。就像这种递归压缩整个文件夹的方法。通常DirectoryIterator是让你通过文件夹的最快方法。

相关问题