<?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>');
?>