2012-01-19 13 views
2

誰かが有効な正規表現を助けることができますか?PHPファイル内で関数の引数を見つける正規表現

私はこの1つ

$variable1 = tr ('This was written in % s . ', array ($year)); 

または

tr ('This was written in % s % s . ' ,array ($month , $year)); 

または

tr('some string ') 

のような関数を含むファイルには、文字列は単一引用符で常にしています。

tr()関数に渡されたすべての文字列を抽出するためにfopen fundtionで取得するソースのテキストが必要です。私はPHPファイルを解析するためにPHPを使用します。どんな助け?

UPDATE作品:

  $fileContents=file_get_contents($file);    


      preg_match_all("/tr\('(.*?)'/", $fileContents, $matches); 

      //preg_match_all('/(?<=tr\s?\(\s?\')(?:\\\\.|[^\\\\\'])*(?=\')/i',  $fileContents, $matches, PREG_PATTERN_ORDER); 

の出口(json_encode($マッチ));

答えて

1

あなたの質問が正しく分かったら、tr()という関数に渡された文字列と正規表現を一致させたいと思う。

次の正規表現は、実行する必要があります。

/tr\('(.*?)'/ 

ので:

<?php 
preg_match("/tr\('(.*?)'/", $fileContents, $matches); 
print_r($matches); 
+0

私は今試して報告します:) –

+0

こんにちは。私は試しました。それは動作しているが、私が必要とする方法ではない...私は複数の文字列があるので、preg_match_allに変更した...私は –

+0

を持っているコードを参照してください、しかし、最初の配列で与える理由tr(と二番目にないと一致する...これは普通ですか? –

4

は、あなたの代わりに、複雑な正規表現のPHPのTokenizer機能を使用して検討していますか?

+0

実際には正規表現はできません...トークナイザのプロは何ですか? –

+0

空白を心配する必要はありません(または一重引用符か二重引用符かどうか)、結果が変数に渡されているかどうか、あるいは引数にネストされた関数呼び出しがあるかどうかPHPのトークナイザを使うもう一つの引数は、 PHPコードを検索するときにPCRE ...しかし、それはなぜあなたがこれを必要とするかによって異なります –

関連する問題