2009-07-30 4 views
1

Я пытаюсь извлечь информацию из тегов с использованием регулярного выражения, а затем вернуть результат на основе различных частей тега.PHP preg_replace() обратные ссылки, используемые в качестве аргументов другой функции

preg_replace('/<(example)?(example2)+ />/', analyze(array($0, $1, $2)), $src);

Так я захватывая части и передать его в функцию analyze(). Оказавшись там, я хочу сделать работу на основе самих частей:

function analyze($matches) { 
    if ($matches[0] == '<example example2 />') 
      return 'something_awesome'; 
    else if ($matches[1] == 'example') 
      return 'ftw'; 
} 

и т.д. Но как только я получаю к функции анализа, $matches[0] просто равна строке «$0». Вместо этого мне нужно $matches[0] для ссылки на обратную ссылку из вызова preg_replace(). Как я могу это сделать?

Спасибо.

EDIT: Я только что увидел функцию preg_replace_callback(). Возможно, это то, что я ищу ...

ответ

0
$regex = '/<(example)?(example2)+ \/>/'; 
preg_match($regex, $subject, $matches); 

// now you have the matches in $matches and you can process them as you want 

// here you can replace all matches with modifications you made 
preg_replace($regex, $matches, $subject); 
Смежные вопросы