Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_match_所有确保独特/独特的结果_Php_Preg Match All - Fatal编程技术网

Php preg_match_所有确保独特/独特的结果

Php preg_match_所有确保独特/独特的结果,php,preg-match-all,Php,Preg Match All,我使用以下代码匹配以“$”开头的脚本中的所有变量,但是我希望结果不包含重复项,即不同/唯一: preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables); 有什么建议吗?用于从输出阵列中删除重复项: preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables); $variables = array_unique($variables[0]); 但我希望您不要试图用它来解析PHP。用于获取给定PHP

我使用以下代码匹配以“$”开头的脚本中的所有变量,但是我希望结果不包含重复项,即不同/唯一:

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);
有什么建议吗?

用于从输出阵列中删除重复项:

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);
$variables = array_unique($variables[0]);
但我希望您不要试图用它来解析PHP。用于获取给定PHP代码的标记。

用于从输出数组中删除重复项:

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

但我希望您不要试图用它来解析PHP。用于获取给定PHP代码的令牌。

请尝试以下代码:

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

请尝试以下代码:

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

不要对正则表达式这样做。在$variables中收集它们之后,只需使用常规编程逻辑/操作对它们进行过滤。例如,如Gumbo所述,使用array_unique

此外,在这些情况下,您的正则表达式将做什么:

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

这三个变量$not、$var和$this都不是变量,但将由您的正则表达式匹配。

不要对正则表达式进行匹配。在$variables中收集它们之后,只需使用常规编程逻辑/操作对它们进行过滤。例如,如Gumbo所述,使用array_unique

此外,在这些情况下,您的正则表达式将做什么:

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

所有三个变量$not、$var和$this都不是变量,但将由您的正则表达式匹配。

我同意这是最简单的解决方案,尽管我很好奇正则表达式中是否有这样做的方法,所以不要将此O1方法变为ON…@icco:我不确定array_unique是如何实现的。但我猜他们在使用哈希表进行查找。这意味着O1.Cheers,我确实看到了php函数,但没有注意到我需要[0],因为结果集很大。啊!我用它来混淆JS,因为google闭包编译器不允许在高级模式下使用JS中的一些编码实践。也就是在静态方法中使用“this”。@icco,当然你可以在regex中使用它,但是向前看会让它在性能方面变成噩梦。这应该可以做到:\$[a-zA-Z0-9]+*\1.另外,变量在$variables数组中的显示顺序是相反的。我同意这是最简单的解决方案,尽管我很好奇在正则表达式中是否有这样做的方法,所以不要将此O1方法变为ON…@icco:我不确定array_unique是如何实现的。但我猜他们在使用哈希表进行查找。这意味着O1.Cheers,我确实看到了php函数,但没有注意到我需要[0],因为结果集很大。啊!我用它来混淆JS,因为google闭包编译器不允许在高级模式下使用JS中的一些编码实践。也就是在静态方法中使用“this”。@icco,当然你可以在regex中使用它,但是向前看会让它在性能方面变成噩梦。这应该可以做到:\$[a-zA-Z0-9]+*\1.另外,变量在$variables数组中以相反的顺序出现。谢谢你的回复,但这在我的例子中不是问题。我的代码用于在打包JS之前对其进行模糊处理,其中包含注释,并且字符串中没有任何$的实例。好的,很高兴听到这个消息,然后您可以安全地使用preg_match_all。我认为值得一提以防万一。谢谢你的回复,但这不是我的问题。我的代码用于在打包JS之前对其进行模糊处理,其中包含注释,并且字符串中没有任何$的实例。好的,很高兴听到这个消息,然后您可以安全地使用preg_match_all。我认为值得一提,以防万一。