[英]PHP preg_match_all get name of variable between short tags
我有使用短标签<?= $some_var; ?>
模板文件<?= $some_var; ?>
<?= $some_var; ?>
。 我需要编写一个脚本来获取该模板中使用的变量的列表,即像这样的数组:
[
0 => '$some_var',
...
n => '$some_var_n'
]
我努力了:
preg_match_all('/<?[^p](.*)?>/s', $file_contents, $matches);
和一些其他各种组合,但没有运气。
谢谢。
您需要逃脱?
,否则它们会使前面的字符/组成为可选字符。 您还可以使正则表达式更严格,并将正则表达式用于PHP提供的有效变量名( http://php.net/manual/en/language.variables.basics.php )。
就像是:
<\?=\h+(\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+);?\h*\?>
应该找到您的变量。
使用token_get_all
:
function genTempVar($text) {
$open = false;
foreach (token_get_all($text) as $v) {
if ( $open ) {
if ( $v[0] == T_CLOSE_TAG ) $open = false;
elseif ( $v[0] == T_VARIABLE ) yield $v[1];
} elseif ( $v[0] == T_OPEN_TAG_WITH_ECHO ) $open = true;
}
}
print_r(iterator_to_array(genTempVar($text)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.