PHP检查上传的文本文件是否包含正则表达式

时间:2017-12-17 22:26:31

标签: php regex

我有 test.txt 文件,我使用PHP上传和阅读。

上传代码并阅读代码

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //GET FILE
    $file = $_FILES['file']['tmp_name'];

    //READ FILE CONTENT AND PUT IT TO STRING
    $read_file = file_get_contents($file);
}

一切都很完美......

此文件包含的内容

if ( ) { int myVariable = 1254 ; //this is my comment }

我上传的这个test.txt文件包含这行代码..

我想做的事情:

我想在阅读此文件后获得此结果:

One Identifier Found: myVariable
One Keyword Found: if
One Number Found: 1254

我尝试过:

我试图爆炸此文件并使用正则表达式来比较此文件中的每个单词

$read_file_array = explode(" ", $read_file);

问题是

我想阅读整个文件并获得相同的结果,而不会爆炸文件取决于空格。 因为该文件可能不包含空格。

由于

1 个答案:

答案 0 :(得分:0)

这是一个非常复杂的问题。你基本上是在尝试创建一个编程语言解析器。您需要绝对定义适合您尝试查找结果的每个类别的内容:

  

我想做的事情:

     

我想在阅读此文件后获得此结果:

One Identifier Found: myVariable
One Keyword Found: if
One Number Found: 1254

您如何识别每种结果的“类型”?

将其设置出来,您可以使用它来定义正则表达式规则。例如,在PHP中,标识符变量是$<name>,因此您可以使用'/($[a-z]+[a-z0-9]*)/i'这样的正则表达式:

  • 找到一个美元符号后跟任意a-z字符1次或更多次,然后是a-z或0-9个字符零次或多次。不区分大小写。

我无法定义您的关键字搜索,因为您需要先定义关键字的实际内容。 Sausage是关键字吗?为什么?这些信息是如何获得的?

要查找数字,您可以执行某些操作,例如检查值是否在某个字符之后,例如等号'\s*=\s*(\d+)'将搜索并找到可能的空格,等于,其他可能的空格随后但1位或更多位数。

我认为你应该离开并阅读有关Regex如何工作的文档和书籍以及在线文字以及正则表达式所经历的逻辑过程,以便最好地设置您的标准以适应正则表达式能够做什么和不能做什么。