PHP中对比两个文本文件的函数咨询及代码修复需求
问题分析与解决方案
你的代码存在几个关键问题导致功能失效:
file_get_contents仅接受一个文件路径参数,你错误地传入了两个文件路径,无法正确读取内容- 无意义的
for循环仅执行一次,且内部的return false会直接终止脚本,后续逻辑无法执行 - 未正确遍历词表中的每个词汇去匹配按键记录
以下是修正后的代码,实现按键记录与词表词汇的匹配检测:
<?php echo "<h3><center>#####Alert#####</center></h3>"; $alertText = "<br>Unsafe user Found"; // 读取两个文件内容 $keyLogContent = file_get_contents('file.txt'); $wordListContent = file_get_contents('wordlist.txt'); // 处理词表:按行分割成数组,过滤空行 $wordList = array_filter(explode(PHP_EOL, $wordListContent), function($word) { return trim($word) !== ''; }); // 遍历词表,检查每个词汇是否存在于按键记录中 foreach ($wordList as $word) { $word = trim($word); // 使用stripos实现大小写不敏感匹配,若需严格大小写改用strpos if (stripos($keyLogContent, $word) !== false) { echo $alertText; // 匹配到后可选择终止循环,避免重复输出提示 // break; // 若需发送邮件,在这里补充邮件逻辑 // mail($to, $subject, $message); } } ?>
代码说明
- 文件读取:分别读取按键记录文件和词表文件的内容,确保数据来源正确
- 词表处理:将词表按行分割为数组,并过滤空行,避免无效匹配
- 匹配逻辑:使用
stripos(大小写不敏感)或strpos(严格大小写)检查每个词表词汇是否存在于按键记录中,匹配成功则输出提示 - 可选优化:匹配到第一个目标词汇后可使用
break终止循环,减少不必要的遍历
内容的提问来源于stack exchange,提问作者Roger31
相关产品推荐
相关产品推荐

