如何找到所有 PHP 变量preg_match
。我制作了以下正则表达式:
$string = 'Hallo $var. blabla $var, $iam a var $varvarvar gfg djf jdfgjh fd $variable';
$instring = array();
preg_match_all('/\$(.*?)/', $string, $instring);
print_r($instring);
我只是不明白正则表达式是如何工作的。
\$(.*?)
不是匹配 PHP 变量名称的正确正则表达式。这样的a 的正则表达式变量名实际上是 PHP 手册的一部分并给出为(不带前导美元符号):
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
所以在你的情况下我会尝试:
\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)
相反,然后。请参阅以下示例:
<?php
/**
* Find all PHP Variables with preg_match
*
* @link http://stackoverflow.com/a/19563063/367456
*/
$pattern = '/\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/';
$subject = <<<'BUFFER'
Hallo $var. blabla $var, $iam a var $varvarvar gfg djf jdfgjh fd $variable
BUFFER;
$result = preg_match_all($pattern, $subject, $matches);
var_dump($result);
print_r($matches);
Output:
int(5)
Array
(
[0] => Array
(
[0] => $var
[1] => $var
[2] => $iam
[3] => $varvarvar
[4] => $variable
)
[1] => Array
(
[0] => var
[1] => var
[2] => iam
[3] => varvarvar
[4] => variable
)
)
如果您想了解 PHP 中的正则表达式如何工作,您需要阅读 PHP 手册以及所使用的正则表达式方言 (PCRE) 的手册。还有一本好书叫《掌握正则表达式》我可以建议阅读。
另请参阅:
- PHP 语法正则表达式(2010 年 11 月;作者:hakre)
- PHP PCRE
- PCRE - Perl 兼容的正则表达式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)