2017-12-17 6 views
0

test.txtファイルをアップロードしてPHPでアップロードします。アップロードされたテキストファイルに正規表現が含まれているかどうかを確認

アップロードコードと、このファイルが

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

私は、この行が含まれてアップロードされたこのtest.txtというファイルが含まれているどのようなコード完全

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

、すべての言葉..

を読みますコードの..

この結果を得るために、このファイルを読んだ後

私が欲しいの:tは私がやろうとしています

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

私がしようとしているもの:

私は、このファイルを爆発し、比較するために正規表現を使用しようとしましたこのファイル内の各単語は

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

問題は

です10

私はファイル全体を読み込み、ファイルを展開せずに同じ結果を得るにはスペースに依存します。 ファイルにはスペースが含まれていない可能性があります。

おかげ

+1

これは正規表現の仕事ではなく、[this](https://github.com/nikic/PHP-Parser)のようなパーサーの仕事です。 – Amadan

答えて

0

これは非常に複雑な問題です。基本的には、プログラミング言語パーサーを作成しようとしています。私がやろうとしています何

:あなたは絶対にあなたがのために結果を見つけようとしているの各カテゴリに合うものを定義する必要が

私はこの結果を得るために、このファイルを読んだ後たい:

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

それぞれの結果の「種類」をどのように認識していますか?

これを設定すると、これを使って正規表現ルールを定義できます。例えばPHP識別子に変数が$<name>あるので、あなたは次のようになり'/($[a-z]+[a-z0-9]*)/i'のような正規表現何かを行うことができます:

  • はAZまたは0-9の文字が続く任意のAZの文字の1回以上の繰り返しが続くドル記号を、検索します0回以上。大文字小文字の区別なし。

最初にキーワードの実際の定義を行う必要があるため、キーワード検索を定義することはできません。 Sausageはキーワードですか?どうして?この情報はどのようにして得られますか?

数値を見つけるには、等号@'\s*=\s*(\d+)'のような特定の文字の後に値があるかどうかをチェックするなどの方法があります。可能なスペースを検索し、等しく、別の可能なスペースを1つ以上数字。

私はあなたが離れて行くと、書類や本を読み、regexでその方法を正規表現作品やロジックプロセスに関するオンラインliteatureが最高できることとできないことを正規表現合わせて基準を設定するために経由するべきだと思います

関連する問題