php - 使用 preg_match 查找所有 PHP 变量

标签 php regex preg-match

如何使用 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/

相关文章:

windows - Perl 的/m 正则表达式修饰符在 Windows 上是否匹配不同?

python - 在 Python 中按标点符号或数字拆分字符串

php - 如何替换 eregi()

php - 为 Windows 上的初学者 PHP 程序员推荐的工具?

php - 有什么解决方案可以在浏览器关闭时更新数据库吗?

Javascript - 替换字符串子字符串内的字符

php - 如何使用php获取字符串中以 '#'开头的单词?

php - preg_match_all 模式创建

php - 使用SQL找出出现次数最多的词的最高频率

php - 扩展 PHPUnit : adding a decorator