尝试在 PHP 中创建一个简单的文本翻译器。
它应该匹配如下:
Bla bla {translator id="TEST" language="de"/}
语言可以是可选的
Blabla <translator id="TEST"/>
这是代码:
$result = preg_replace_callback(
'#{translator(\s+(?\'attribute\'\w+)="(?\'value\'\w+)")+/}#i',
array($this, 'translateTextCallback'),
$aText
);
它提取“属性”,但只获取最后一个。我的第一个想法是,它与组命名有关,当 PHP 在每次匹配时覆盖(命名)数组元素时。但省略组命名它也只返回最后一场比赛。
这是一个返回给回调的数组作为示例
Array
(
[0] => {translator id="TEST" language="de"/}
[1] => language="de"
[attribute] => language
[2] => language
[value] => de
[3] => de
)