\$(.*?)
PHP 変数名に一致する正しい正規表現ではありません。このような変数名の正規表現は、実際には 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);
出力:
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) のマニュアルを読む必要があります。また、 「Mastering Regular Expressions」という良い本もあります。これを読むことをお勧めします。
同様に参照してください: