<?php /** * Использование preg_replace_callback в методе класса * автор: Nc_Soft * 03.01.09 */ /* Предположим, что надо сделать замену для смайлов смайлы будут иметь вид <ЧИСЛО> и заменять это будем на <img src="/smile/ЧИСЛО.jpg" alt="" /> доп условия: -число замен не более 3 -число в смайле должно соответствовать некоторому условию (в примере это диаппазон от 1 до 15) */ class Smile { //учитываем число замен private $smiles=0; //функция печати смайлов function print_smiles($text) { return preg_replace_callback('|<(\d+)>|',array($this,'scb'),$text); } //функция обратного вызова для регулярки private function scb($v) { if ($this->smiles<3 && $v[1]>=1 && $v[1]<=15) { $this->smiles++; return '<img src="/smile/'.$v[1].'.jpg" alt="" />'; } return $v[0]; } } //пример $s=new Smile(); echo $s->print_smiles('<1> <23><3><5><4>'); ?>