在PHP中查找字符串中空格和下划线的正确排列


Finding the correct permutation of spaces and underscores in a string, in PHP

我必须解析写入磁盘的所有文件的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的日志条目,可能会导致不想要的行为。我认为这可能是一个非常不可能的情况,但仍然值得注意。