所以我正在阅读一堆PHP文件,试图找到函数调用的每个精度,
我正在寻找的功能是".lng("something")." OR '.lng('something').'
我正在使用以下功能进行搜索
function fetchAllBetween($needle1,$needle2,$haystack,$include=false){
$matches = array();
$exp = "|{$needle1}(.*){$needle2}|U";
//exit($exp);
preg_match_all($exp,$haystack,$matches);
$i = ($include == true) ? 0 : 1 ;
return $matches[$i];
}
所以我像这样运行它
$tmp2 = fetchAllBetween("lng('","')", $theData);
print_r($tmp2);
这将返回空数组,但是如果我尝试运行以下内容
$tmp2 = fetchAllBetween("lng",".", $theData);
它返回一个值为空的数组...有人能帮我这个吗?基本上,我正在尝试检索一堆文件中传递给lng()函数的参数。
这个正则表达式就可以了
preg_match_all('#'.lng'(([''"])(.*?)(?:'1)')#', $str, $matches);
http://ideone.com/IQCzX
生成的表达式是 lng(('".*"'))
,您需要更改几件事。尝试使用这个:
$tmp2 = fetchAllBetween("'.lng'([''"]","['"']')'.", $theData);
print_r($tmp2);
注意事项:
- 我已经添加了
.
(并转义了它) - 我已经逃脱了括号
- 我已将单引号和双引号放在字符类中,以便它匹配(并为PHP字符串转义了双引号)