function replaceContent($matches = array()){
if ($matches[1] == "nlist"){
// do stuff
return "replace value";
} elseif ($matches[1] == "alist"){
// do stuff
return "replace value";
}
return false;
}
preg_replace_callback('/<([n|a]list)\b[^>]*>(.*?)<\/[n|a]list>/','replaceContent', $page_content);
$ совпадений в replaceContent () возвращает этот массив, если совпадения найдены:
Array
(
[0] => <nlist>#NEWSLIST#</nlist>
[1] => nlist
[2] => #NEWSLIST#
)
Array
(
[0] => <alist>#ACTIVITYLIST#</alist>
[1] => alist
[2] => #ACTIVITYLIST#
)
В данный момент моя функция preg_replace_callback заменяет значение совпадений на $ match [0]. То, что я пытаюсь сделать, и задаюсь вопросом, если вообще возможно, это заменить все, что находится внутри тегов ($ match [2]), и в то же время иметь возможность выполнить проверку $ match [1].
Проверьте мое регулярное выражение здесь: http://rubular.com/r/k094nulVd5