Пытается создать простой текстовый переводчик в PHP.regex extract/replace значения из xml-подобных тегов через named (sub) groups
Это shoult матч что-то вроде:
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 перезаписывает элементы массива (named) в каждом матче. Но, оставив группу, назвав ее, она возвращает только последний матч.
Вот массив, возвращаемый обратный вызов в качестве примера
Array
(
[0] => {translator id="TEST" language="de"/}
[1] => language="de"
[attribute] => language
[2] => language
[value] => de
[3] => de
)
@void: Привет, и Добро пожаловать на StackOverflow! Я взял на себя смелость редактировать свой пост, отформатировать части кода, чтобы их было легче читать. Для ваших следующих вопросов это можно сделать, используя значок с 0 и 1 в верхней части окна редактирования; и, при необходимости, есть ссылка справа от страницы «спрашивать вопрос», которая указывает на ссылку синтаксиса, которую вы можете использовать для написания вопросов/ответов :-) –