<?php /** * Вызов preg_replace_callback в классе * автор: Nc_Soft * 11.06.09 */ /* Рассмотрим на примере смайлов условия: смайлов должно быть не более 3 в одном сообщении смайлы вызываются как-то так :smile: */ class Smiles { //счетчик смайлов static $smc=0; //список смайлов static $smiles=array( 'smile', 'hi', 'yes', 'bad', //итд ); //функция печатающая текст (обратите внимание на callback вызов) static function pr($str) { return preg_replace_callback('`:([^\s]+):`U', array('self', 'cbs'), $str); } //функция обратного вызова для регулярного выражения //проверяет список смайлов и их количество static function cbs($v) { if (self::$smc<3) { if (in_array(strtolower($v[1]), self::$smiles)) { self::$smc++; return '<img src="/smiles/'.$v[1].'.gif" alt="'.$v[1].'"/>'; } } return $v[0]; } } //пример echo Smiles::pr('Тут текст со смайлами (неверный смайл :error: ) :smile: :hi: :yes: :bad: ');