PHP正则表达式返回值为空的数组
所以我在读一堆PHP文件,试图找到函数调用的每个accurance 我正在寻找的函数是“.lng”(“某物”)或“.lng”(“某物”)。 我正在使用以下函数进行搜索PHP正则表达式返回值为空的数组,php,regex,Php,Regex,所以我在读一堆PHP文件,试图找到函数调用的每个accurance 我正在寻找的函数是“.lng”(“某物”)或“.lng”(“某物”)。 我正在使用以下函数进行搜索 function fetchAllBetween($needle1,$needle2,$haystack,$include=false){ $matches = array(); $exp = "|{$needle1}(.*){$needle2}|U"; //exit($exp)
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);
您得到的表达式是
lng(“*”)
,您需要更改一些内容。尝试使用以下方法:
$tmp2 = fetchAllBetween("\.lng\(['\"]","[\"']\)\.", $theData);
print_r($tmp2);
注意事项:
- 我添加了
(并对其进行了转义) - 我从括号里逃出来了
- 我将单引号和双引号放在一个字符类中,这样它将匹配其中一个(并对PHP字符串的双引号进行了转义)
preg_quote()
,而不是手动转义参数。您确实不应该使用
作为正则表达式分隔符。它在正则表达式(分隔替代项)中有特殊的含义,如果将其用作分隔符,则不能再将其用于此目的!谢谢,我得把它取下来。然后它按我需要的方式工作(有时它被传递到函数/对象中),谢谢你的帮助!