Php 如何在保存匹配规则的数组中调用函数

Php 如何在保存匹配规则的数组中调用函数,php,arrays,regex,preg-replace,preg-match,Php,Arrays,Regex,Preg Replace,Preg Match,我试图调用一个数组中的函数,但使用匹配项 我有一个包含文本$text和2个数组的字符串 数组A具有查找内容的规则: $a=array('rule1', 'rule2', rule3'); 阵列b具有: $b=array("Rule 1 return the matches: $1 $2 $3", "Rule 2: $1 $2 $3", "Rule 3 $1 $2 $3"); 通过foreach循环,数组完成了以下工作: foreach($a AS $key => $val){

我试图调用一个数组中的函数,但使用匹配项

我有一个包含文本$text和2个数组的字符串

数组A具有查找内容的规则:

$a=array('rule1', 'rule2', rule3');
阵列b具有:

$b=array("Rule 1 return the matches: $1 $2 $3", "Rule 2: $1 $2 $3", "Rule 3 $1 $2 $3");
通过foreach循环,数组完成了以下工作:

foreach($a AS $key => $val){
    while(preg_match($val, $text)){
        $text = preg_replace($val, $b[$key], $text);
    }
}
有办法吗?对于阵列b的do:

$b=array("Rule 1 return the matches:".calltofunction("$1$2$3")."", ...
我尝试对匹配项使用\1和$1,但每次函数收到字符串$1$2$3或\1\2\3而不是匹配值时调用该函数


问候

这似乎是不可能的,保存规则的数组A,yes可用于保存规则。但是对于B,需要为每个B创建自定义函数

function Myfunction($text) {
    return preg_replace_callback($a[the num id],
    function($match) {
        return "This return this matches: $match[1] $match[2] $match[3]";
    }
    , $text);
}

如果php支持的话,您可能需要对此进行评估。顺便说一句,您还没有显示明显的常量正则表达式。regex捕获组和密钥之间存在关联,但我认为不能这样做,因为$key必须是一个捕获组。或者,我遗漏了一些内容。show real regex或use preg\u replace/e选项/e修饰符/选项已弃用,应使用preg\u replace\u回调代替它。我不知道这是否适用于这里,但是,我真的看不到OP是什么。谢谢你的回复,我搜索了,这似乎不可能像我正在尝试。我对数组的每一项都使用preg_replace_回调,现在它可以工作了!当做