preg_match_all 确保不同/唯一的结果

发布于 2024-08-21 18:21:10 字数 150 浏览 1 评论 0原文

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

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

有什么建议吗?

I am using the following code to match all variables in a script starting with '$', however i would like the results to not contain duplicates, ie be distinct/unique:

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

Any advice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

滥情稳全场 2024-08-28 18:21:10

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

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

但我希望你不是尝试用它来解析 PHP。使用 token_get_all 获取给定 PHP 代码的令牌。

Use array_unique to remove the duplicates from your output array:

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

But I hope you’re not trying to parse PHP with that. Use token_get_all to get the tokens of the given PHP code.

痴梦一场 2024-08-28 18:21:10

不要用正则表达式这样做。将它们全部收集到 $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)都不是变量,但将由您的正则表达式匹配。

Don't do that with regex. After you collected them all in your $variables, simply filter them using normal programming logic/operations. Using array_unique as Gumbo mentioned, for example.

Also, what will your regex do in these cases:

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

All three "variables" ($not, $var and $this) aren't variables, but will be matched by your regex.

我还不会笑 2024-08-28 18:21:10

尝试以下代码:

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

Try the following code:

preg_match_all('/\$[a-zA-Z0-9]+/', $code, $variables);
$variables = array_unique($variables);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文