我得到了以下代码
$original_file=str_replace('<?php','',file_get_contents('file.txt'));
//regular expression to get anything that starts with '$' and end with ';'
preg_match_all("/''$(.*?);/",$original_file,$matches,PREG_PATTERN_ORDER);
我已经成功地获得了以"$"开头的变量或任何内容,但现在我正试图修改该正则表达式以查找$,并检查它前面是否有''comments关键字。如果是,那就不要接受。有人有好的建议吗?我使用的是PHP preg_match_all,正如您在上面看到的那样。感谢您的帮助。
您可以尝试:
preg_match_all("~(?<!//)'$([^;]*);~", $original_file, $matches, PREG_PATTERN_ORDER);
As@anubhava,但使用s
选项遍历所有$str
行,
preg_match_all('/(?<!''')'$([^;]+);/s', $str, $m, PREG_PATTERN_ORDER);
为了避免通用匹配,使用变量语法(假设字母数字变量如PHP变量(,
preg_match_all(
'/(?<!''')'$([a-z0-9_]+);/si',
$str,
$m,
PREG_PATTERN_ORDER
);
如果没有这一点增强,您的解析器将捕获错误的语法,在的情况下
$str = "'nTEST'n'n '$x;'$y;'ny'$y_ '$_X;";
有关完整的"模板解析",请参阅Smallest Tempalte System的概念和讨论。