0

所以我正在阅读一堆 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() 函数的参数..

4

2 回答 2

0

这个正则表达式会做

preg_match_all('#\.lng\(([\'"])(.*?)(?:\1)\)#', $str, $matches);        

http://ideone.com/IQCzX

于 2012-04-30T07:36:53.333 回答
0

您得到的表达式是lng(('".*"')),您需要更改几件事。尝试使用这个:

$tmp2 = fetchAllBetween("\.lng\(['\"]","[\"']\)\.", $theData);
    print_r($tmp2);

注意事项:

  • 我添加了.(并逃脱了它)
  • 我已经逃脱了括号
  • I've put the single and double quotes in a character class so it will match either (and escaped the double for the PHP string)
于 2012-04-30T07:37:42.240 回答