php 回调函数 传参数,php – 有没有办法在preg_replace_callback回调函数中传递另一个参数?...

嗯,我真的很希望我的英文很好地解释我需要什么.

让我们来看看这个例子(这只是一个例子!)的代码:

class Something(){

public function Lower($string){

return strtolower($string);

}

}

class Foo{

public $something;

public $reg;

public $string;

public function __construct($reg,$string,$something){

$this->something = $something;

$this->reg = $reg;

$this->string = $string;

}

public function Replace(){

return preg_replace_callback($this->reg,'Foo::Bar',$this->string);

}

public static function Bar($matches){

/*

* [...]

* do something with $matches and create the $output variable

* [...]

*/

/*

* I know is really useless in this example,but i need to have an istance to an object here

* (in this example,the Something object,but can be something else!)

*/

return $this->something->Lower($output);

}

}

$s = new Something();

$foo = new Foo($myregexp,$mystring,$s);

$content = $foo->Replace();

所以,PHP手册说,在preg_replace_callback()中使用类方法作为回调,该方法必须是抽象的.

我需要在回调函数中传递一个previuosly已初始化的对象(在该示例中为Something类的一个实例)的实例.

我尝试使用call_user_func(),但没有工作(因为我以这种方式我错过了match参数).

有没有办法做到这一点,还是让我分开进程(在preg_match_all之前,为每个匹配检索替换值,然后是一个简单的preg_replace)?

编辑:作为旁注,在tom haigh答案之前,我使用这个工作(在这个例子中,这是替换方法):

$has_dynamic = preg_match_all($this->reg,$this->string,$dynamic);

if($has_dynamic){

/*

* The 'usefull' subset of my regexp is the third,so $dynamic[2]

*/

foreach($dynamic[2] AS $key => $value){

$dynamic['replaces'][$key] = $this->Bar($value);

}

/*

* ..but i need to replace the complete subset,so $dynamic[0]

*/

return str_replace($dynamic[0],$dynamic['replaces'],$this->string);

}else{

return $this->string;

}

希望可以帮助某人.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值