任何人都可以使用有效的正则表达式吗?
我有一个包含像这样的函数的文件
$variable1 = tr ('This was written in % s . ', array ( $year ));
或
tr ('This was written in % s % s . ' ,array ( $month , $year ));
或
tr('some string ')
字符串始终使用单引号。
我需要从源文本中获得fopen fundtion来提取传递给tr()
函数的所有字符串。我用php来解析php文件。有什么帮助吗?
UPDATE WOrks:
$fileContents=file_get_contents($file);
preg_match_all("/tr\('(.*?)'/", $fileContents, $matches);
//preg_match_all('/(?<=tr\s?\(\s?\')(?:\\\\.|[^\\\\\'])*(?=\')/i', $fileContents, $matches, PREG_PATTERN_ORDER);
出口(json_encode($匹配));
答案 0 :(得分:4)
您是否考虑过使用PHP的Tokenizer函数而不是复杂的regexp?
答案 1 :(得分:2)
如果我理解你的问题,你想要一个正则表达式来匹配传递给一个名为tr()
的函数的字符串。
以下正则表达式应该:
/tr\('(.*?)'/
所以:
<?php
preg_match("/tr\('(.*?)'/", $fileContents, $matches);
print_r($matches);