Php 将文本文件作为模板进行比较

Php 将文本文件作为模板进行比较,php,regex,Php,Regex,我有一些上传到我的网站的文件,我想将它们与已知的文件模板进行比较,以寻找可能的匹配 例如,我可以有一个带有以下“模板”的文本文件 template.txt 然后,假设有人上传了以下文件 bio.txt 这将匹配模板,从而触发与该匹配关联的规则 显然,这是一个非常淡化的例子,但应该能让人明白这一点。真正的正则表达式将更具表现力,以匹配特定的东西,如任何URL、比特币地址等(我已经有了所有这些的表达式) 我曾经尝试过正则表达式,因为这是我如何与上传的文件进行其他更复杂匹配的方法,但当遇到诸如新行和转

我有一些上传到我的网站的文件,我想将它们与已知的文件模板进行比较,以寻找可能的匹配

例如,我可以有一个带有以下“模板”的文本文件

template.txt

然后,假设有人上传了以下文件

bio.txt

这将匹配模板,从而触发与该匹配关联的规则

显然,这是一个非常淡化的例子,但应该能让人明白这一点。真正的正则表达式将更具表现力,以匹配特定的东西,如任何URL、比特币地址等(我已经有了所有这些的表达式)

我曾经尝试过正则表达式,因为这是我如何与上传的文件进行其他更复杂匹配的方法,但当遇到诸如新行和转义大量字符等挑战时,这确实会变得很麻烦。例如,我有20行以上的文件作为模板-将所有新行转换为
\n
,并转义所有括号、方括号等都是疯狂的,更不用说这感觉太过分了?据我所知,正则表达式似乎不喜欢在模式部分使用多行

是否有更好的方法将此“模板”文件与提供的文件相匹配?我对“比较文本文件”所做的任何搜索都会提供更多的逐行比较,例如显示代码行之间的差异。我需要与预期的模式完全匹配;如果模板不匹配,那么总体结果当然应该是不匹配的

我目前确实有类似正则表达式的设置,我基本上只是通过
preg_match()
将它们都抛出,但是有没有更好、更统计的方法来解决这个问题呢


我的网站是用PHP编程的,所以我需要实现它。恐怕我无法在共享(廉价)主机的外壳上访问太多内容。

您能给出一个您遇到问题的真实示例吗?除非使用
s
修饰符,否则
不会匹配新行。它被击中或未击中,感觉regex是黑客为这一点。然后我基本上通过
preg\u match('/'.file\u get\u contents($template\u path)。'/',file\u get\u contents($upload\u path))
来运行这个过程。
Hi, my name is (\w+), and I like (\w+).
Hi, my name is James, and I like cats.