На ООП

                        
[code]
<?php
/**
* Smiles
*
* PHP versions 4 and 5
*
* @author Nu3oN <[email protected]>
* @license http://7je.ru/read/phpcode/id:33
* @link http://7je.ru
*/

class Smiles {

// Путь к папке со смайлами.
public static $dirSmiles = 'http://7je.ru/smiles/';

// Путь к файлу кэша.
public static $fileCache = 'cache/smiles.dat';

// Путь к файлу с перечнем смайлов.
private static $_strFile = 'smiles/smiles.dat';

// Массив со смайлами.
private static $_array = array();

// Проверка существования массива.
private static $_isArr = false;

// Проверка существования файла с перечнем смайлов.
private static $_isFile = false;



/**
* _isFile
*
* Проверка существования файла с перечнем смайлов.
*
* @return array Массив со смайлами
**/
private static function _isFile()
{
$result = array();

if (is_file(self :: $_strFile) == true) {

$result = file(self :: $_strFile);
self :: $_isFile = true;

}

return $result;
}


/**
* _getSmiles
*
* Разбиваем массив со смайлами на ключи и значения.
* '=)' => '<img src="smile.gif" alt="" />'
*
* @return array Ассоциативный массив со смайлами.
**/
private static function _getSmiles()
{

$result = array();
$arrSmiles = self :: _isFile();

if (self :: $_isFile) {

foreach($arrSmiles as $key) {

$exSmile = explode('|:|', $key);

if (count($exSmile)) {
$result[trim($exSmile[0])] = '<img src="'.self :: $dirSmiles.trim($exSmile[1]).'" alt="" />';
}
}
}

return $result;
}


/**
* _processing
*
* Узнаем откуда брать массив со смайлами
* Если есть файл кэша, то берем из кэша,
* Если нет, то берем из из перечня.
*
**/
private function _processing()
{

$intTime = @filemtime(self :: $fileCache) + 86400;

if ($intTime < time()) {

self :: $_array = self :: _getSmiles();

file_put_contents(self :: $fileCache, serialize(self :: $_array), LOCK_EX);
chmod(self :: $fileCache, 0777);

} else {

$strFile = file_get_contents(self :: $fileCache);
self :: $_array = unserialize($strFile);

}

self :: $_isArr = true;

}


/**
* display
*
* Обрабатываем строку, и выдаем результат.
*
* @param string $str Исходная строка.
* @return string
**/
public static function display($str)
{

if (self :: $_isArr === false) {
self :: _processing();
}

return strtr($str, self :: $_array);
}
}
?>[/code]
ростой класс для обработки смайлов!
Файл smiles.dat должен выглядеть так:
Пример: тег_смайла|:|изображение
[code]:)|:|smile.gif
:-)|:|smile.gif
:D|:|biggrin.gif
:-D|:|biggrin.gif
[/code]
Использование класса:
[code]<?php
include_once('Smiles.class.php');
$smiles = new Smiles;
$str = 'Парам пам пам :)';
echo Smiles :: display($str);
?>[/code]
Плюс класса в том что за всю работу сценария, файл подгружается единожды, потом обрабатывается и пишется в кэш!
0 12 0
Без комментариев...