我必须解析写入磁盘的所有文件的XFERLOG日志文件,并用外部脚本处理上述文件。XFERLOG的问题是,它用下划线替换所有空格,而磁盘上的文件名保持不变(应该如此)。
如果原始文件名混合了空格和下划线,则很难确定磁盘上的实际文件名,因此必须遍历空格和下划线的所有排列,再次检查文件系统中的每个排列,以查看它是否存在。
那么让我们假设日志文件读到:
/path/to/file/OCD_Nightmare_-_[stuff_here_2].txt
磁盘上的实际文件看起来像这样:
/path/to/file/OCD Nightmare - [stuff_here 2].txt
这里有2^5个排列。找到"正确"字符串的最佳方法是什么?
可能使用str_replace:
if(str_replace('_', ' ', $filename) == str_replace('_', ' ', $logfilename))
{
//Yay, a match!
}
注意:正如下面的评论中提到的,如果您的文件系统有/path/to/file/OCD_Nightmare_-_[stuff_here_2].txt
和/path/to/file/OCD_Nightmare -_[stuff here_2].txt
,它们都将匹配/path/to/file/OCD Nightmare - [stuff_here 2].txt
的日志条目,可能会导致不想要的行为。我认为这可能是一个非常不可能的情况,但仍然值得注意。