PHP 正则表达式返回值为空的数组


PHP Regex returning array with values empty

所以我正在阅读一堆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字符串转义了双引号)