我在找一个可以代替glob的函数。我得到了这个,它工作得很完美。
<?php
$tipof = 'FACTURA';
$cliente = '455928';
$files = glob("$cliente-$tipof*.pdf");
foreach ($files as $rows): ?>
<td align="center"> <?php echo end((explode('-', str_replace('.pdf','', $rows)))); ?> </td>
<td align="center"> <?php echo $cliente ?> </td>
<td align="center"> <?php echo "<a target=_blank href=\"".$rows."\">Ver</a>"; ?> </td>
</tr>
文件在项目文件夹中,但如果文件在URL中,我该怎么办?例如像这样:http://192.168.0.196:8080/pdf/
在URL中,我文件是455928-FACTURA-A106-8694-20171019.pdf
谢谢!
3条答案
按热度按时间lxkprmvk1#
您不能通过HTTP执行
glob
。glob
依赖于能够读取目录中所有文件的列表。HTTP没有“目录”的概念,也没有枚举路径部分的标准化方法。它只处理 * URL *。URL甚至不必以任何方式与 * 文件 * 相对应。URLhttp://example.com/foo/bar
* 可以 * 由一个文件支持,或者服务于此URL的Web服务器可以根据它的感觉动态创建响应。没有办法枚举 * 所有可能的URL *,当这样的URL可以只是在飞行中,因此没有办法glob
通过HTTP。http://192.168.0.196:8080/pdf/
上的目录列表,您可以尝试解析它。ztigrdn82#
如果文件存储在另一台机器上,无法访问该机器的文件系统,我会创建某种端点(PHP就可以了),并通过客户端 AJAX 调用端点,或者通过PHP服务器端的CURL获得响应,这取决于您的应用程序需要。end-point会将结果公开为json,供您的脚本使用。我不会使用ftp或其他方式来暴露文件系统。如果在浏览器中使用CORS,请注意。
brccelvz3#
glob替代
所以屏幕抓取不是你正在看的东西。在PHP世界中,有几个东西可以打开文件夹目录并找到其中的所有项目。
1
opendir
为您提供一个句柄,您可以readdir
获取文件夹的内容,无论是文件还是子文件夹。DirctoryIterator
DirectoryIterator类让你做更多的事情,但基本上是一个迭代器,你可以在
foreach()
设置中使用。就像这种递归压缩整个文件夹的方法。通常DirectoryIterator是让你通过文件夹的最快方法。