如果文件夹B中没有文件,请使用文件夹A中的文件


Use files in Folder A if not present in Folder B

2个文件夹。如果文件夹B中不存在文件,则从文件夹A中递归获取文件。

我们有文件夹A

fotos
->pic1.png
->pic2.png
theme
->reset.css
->index.php
->folder
->...
index.php
style.css

文件夹B

其中用户保存单独的更改。所以这里的文件从1到全部都不一样,例如她/他只更改了2个文件:

fotos
->pic1.png
->style.css

如果文件夹B中不存在,我们希望从文件夹A中获取文件/文件夹,而不是处理整个文件夹。

如何递归地实现这一点,有没有与之相关的术语

我会使用RecursiveDirectoryTerator,但方法:将两个目录加载到数组中,然后优先合并到文件夹B,这是不可行的,因为它们有不同的索引。最后,只复制关于资源的整个文件夹(与其说空间是个问题,不如说内存是个问题)会更好吗?

编辑:

目标不同,但有一些相似之处。到目前为止还无法使其工作,感谢您的帮助回答。我更喜欢mod_rewrite。。。如果它是一个有效的潜在解决方案。。。在使用资源密集型php函数之前。

编辑2:

这在mod_rewrite中可能吗?我希望它是动态的,因为它应该适用于所有用户。结构如下,必要时可以更改:

FOLDER A: 
www/sources/folder A1
www/sources/folder A2
...
FOLDER B: (this are the user's individual Folders)
www/userfiles/folder A1/folder B1
www/userfiles/folder A1/folder B2
...
www/userfiles/folder A2/folder B1
www/userfiles/folder A2/folder B2
...

感谢任何人给我们带来光明。。。请

如果每个图片请求都指向输出它们的php脚本,那么在尝试输出文件之前,可以使用一个简单的file_exists语句。

如果你真的很懒,你可以在include路径中添加两个文件夹(http://www.php.net/manual/en/ini.core.php#ini.include-path),并使用use_include_path标志设置为true的file_get内容来加载图像。它将尝试先打开一个文件夹中的文件,然后再打开另一个文件夹。不过要小心,因为如果它在这些文件夹中找不到它,它就会开始查看其他包含文件夹,一些肆无忌惮的用户可能会试图利用这一点。

获取文件夹A上的文件,然后

转到文件夹B 的路径

 if(!file_exists($file)){
   //set the path to get the files in the folder or merge the unique files
 }

如果您想要

,您可以使用scan_dir或任何其他函数