如何使用 preg_match
找到所有 PHP 变量。我制作了以下正则表达式:
$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 regular expression for a Variable Name is actually part of the PHP manual 并给出(没有前导美元符号):
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
所以在你的情况下我会尝试:
\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)
然后。 See the following example:
<?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);
输出:
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 - 使用 preg_match 查找所有 PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19562936/