Чем лучше заменить preg_replace_callback()?

Lightning

Трудоголик
Чем лучше заменить preg_replace_callback()?

Необходимо каждое вхождение паттерна в строку заменить по определенному алгоритму. preg_replace_callback() не подходит, т.к. функция обработки - приватный метод класса, которому нужно передавать дополнительные аргументы. Что лучше использовать вместо preg_replace_callback()?
 

Вурдалак

Продвинутый новичок
В неприватном методе класса вместо названия callback-функции:
PHP:
$this->s = preg_replace_callback('/pattern/', array($this, 'method'), $this->s);
В доп. аргументы передашь через атрибуты класса.
 

Lightning

Трудоголик
1. method приватный.
2. Передавать аргументы через атрибуты класса - костыль, который можно применить не всегда. Например, когда нужна рекурсия...
 

Вурдалак

Продвинутый новичок
Lightning
Кстати, что вообще мешает просто использовать модификатор "e"? Единственное, там с экранированием небольшая гадость.
 

Lightning

Трудоголик
Да, действительно, ничего не мешает. Всем спасибо. Тема закрыта.
 
Сверху