PHP Regex返回值为空的数组

时间:2012-04-30 07:28:34

标签: php regex

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

2 个答案:

答案 0 :(得分:0)

这个正则表达式会做

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

http://ideone.com/IQCzX

答案 1 :(得分:0)

您的结果表达式为lng(('".*"')),您可能需要更改几件事。试试这个:

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

注意事项:

  • 我添加了.(并将其转义)
  • 我已经转过了方括号
  • 我将单个双引号放在一个字符类中,这样它就可以匹配(并转义为PHP字符串的double)