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

问题描述 投票:0回答:1

我有test.txt文件,我上传并使用PHP读取它。

Upload Code and read code

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);
}

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

What this file contains

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

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

What I am trying to do:

我想在阅读此文件后得到这个结果:

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

What I have tried:

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

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

Problem is

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

谢谢

php regex
1个回答
0
投票

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

What I am trying to do:

我想在阅读此文件后得到这个结果:

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

How do you recognise each of your "types" of result?

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

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

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.