1

次のコードを使用して、「$」で始まるスクリプト内のすべての変数を一致させていますが、結果に重複が含まれないようにしたい、つまり、個別/一意である必要があります。

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);

何かアドバイス?

4

3 に答える 3

8

array_unique出力配列から重複を削除するために使用します。

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);
$variables = array_unique($variables[0]);

しかし、それで PHP を解析しようとしていないことを願っています。token_get_all指定された PHP コードのトークンを取得するために使用します。

于 2010-02-16T20:43:36.227 に答える
2

正規表現でそれをしないでください。それらをすべて に収集したら$variables、通常のプログラミング ロジック/操作を使用してそれらをフィルタリングするだけです。array_uniqueたとえば、ガンボが述べたように使用します。

また、これらの場合、正規表現は何をしますか:

// this is $not a var
foo('and this $var should also not appear!');
/* and what about $this one? */

3 つの「変数」( $not$varおよび$this) はすべて変数ではありませんが、正規表現によって一致します。

于 2010-02-16T20:45:51.713 に答える
1

次のコードを試してください。

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);
$variables = array_unique($variables);
于 2010-02-16T20:45:07.430 に答える