Попытка создать простой текст-переводчик в 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
)