\$(.*?)
Неправильное регулярное выражение в соответствии с именем переменной 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). Также есть хорошая книга под названием «Освоение регулярных выражений», которую я могу предложить для чтения.
Смотрите так же:
Это будет работать в терминах 'regex', но не в терминах' PHP'. Образец: '$% #' будет замаскирован - но это не действительная переменная php. Вы можете ограничить буквенно-числовой буквой '$ ([\ w \ d] +)', но тогда '$ {'foo'}' не будет проверяться. Заключение - это идея _bad_ попытаться реализовать синтаксический синтаксический анализ с помощью regex –
@Alma Do Mundo: «Спасибо» не-жадному совпадению здесь, соответствие нулевых символов для повторения звезды уже делает это. Замечание плохой идеи на самом деле стоит того, я мог бы поставить этот угол в свой ответ и, возможно, предоставить ссылку на [PHP Parser] (https://github.com/nikic/PHP-Parser). – hakre
['token_get_all()'] (http://php.net/manual/en/function.token-get-all.php) также может это сделать. Просто отфильтруйте результаты с помощью 'T_VARIABLE' –