preg_replacement_callback转换为什么会失败?

时间:2018-06-23 15:08:16

标签: php

我必须将preg_replace转换为preg_replace_callback 旧的preg_replace正在从数组中获取字符串和替换

那个旧数组是

add_filter( 'woocommerce_format_sale_price', 'dcwd_sale_price', 20, 3 );
function dcwd_sale_price( $price, $regular_price, $sale_price ) {
    if( $sale_price > 0 )
        return wc_price( $sale_price );
    else
        return wc_price( $regular_price );
}

原来的preg_replace是

'size'=> array('bbcode_id' => 5,    'regexp' => array('#\[size=([\- 
    \+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')"))

我做了

$this->message = preg_replace($regexp, $replacement, $this->message);

修改后的preg_replace_callback

'size'=> array('bbcode_id' => 5,    'regexp' => array('#\[size=([\- 
    \+]?\d+)\](.*?)\[/size\]#uis' => function($matche                       
    return $this->bbcode_size('$matches[1]',' $matches[2]');
                             }
                             )),

问题是当我在函数中添加双引号时 数组工作正常,并给我输出

$this->message = preg_replace_callback($regexp,
        $replacement, $this->message
                        );

但给出了错误,有效的回调替换应带有参数

我删除了双引号,相反的没有发生错误,但数组没有获取变量值 输出:

[size=200]some text to test[/size]

0 个答案:

没有答案