preg_match_all 确保不同/唯一的结果
我使用以下代码来匹配脚本中以“$”开头的所有变量,但是我希望结果不包含重复项,即不同/唯一:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
array_unique
从输出数组中删除重复项:但我希望你不是尝试用它来解析 PHP。使用
token_get_all
获取给定 PHP 代码的令牌。Use
array_unique
to remove the duplicates from your output array: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.不要用正则表达式这样做。将它们全部收集到
$variables
中后,只需使用正常的编程逻辑/操作过滤它们即可。例如,使用 Gumbo 提到的 array_unique 。另外,在这些情况下你的正则表达式会做什么:
所有三个“变量”(
$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. Usingarray_unique
as Gumbo mentioned, for example.Also, what will your regex do in these cases:
All three "variables" (
$not
,$var
and$this
) aren't variables, but will be matched by your regex.尝试以下代码:
Try the following code: