【发布时间】:2016-07-13 17:24:12
【问题描述】:
我有一个替换回调方法,我试图用数组值相应地替换多个字符串。
我已经通过use关键字将$parametersArray传递给回调方法如下(正则表达式匹配3个元素):
$string = 'Welcome Mr MM1, MM2 MM3 to the website';
$parametersArray = array('K', 'A' , 'AD');
$line = preg_replace_callback(
'(MM[1-9])',
// anonymous
function () use ($parametersArray) {
static $paramArray = $parametersArray;
return array_shift($paramArray);
},
$string
);
我收到以下错误:
解析错误:语法错误,意外的 '$parametersArray' (T_VARIABLE)
如果我将数组显式设置为静态变量,我不会收到错误并获得预期的行为。
将数组作为变量直接赋值给函数内静态定义的变量有问题吗?
【问题讨论】:
-
你能分享一个
$string吗?此外,您的回调与$matches无关,为什么要使用preg_replace_callback?顺便说一句,您也不必指定另一个数组,请参阅ideone.com/F7SoTc。 -
我已编辑问题以添加
$string。这个想法是相应地用数组值替换匹配项。$matches可以从回调方法定义中省略,你是对的。 -
好问题,但正确缩进代码有这么难吗?
-
@hek2mgl 我只是为发光体保留一些空间......