Написал тут что бы теги при добавлени статьи подсвечивались, выкладываю на ваш суд. Добавить надо в файл
/classes/other/class_editor.php
$text = $this->_ParseTag($text);
Примерна на строки 265-266 перед return $text;
и после любой функции добавить ниже функцию.
private function _ParseTag($text)
{
set_time_limit(300000);
$tags=$this->Mainclass->Db->Query('SELECT `name` FROM `f_news_tags`',__file__,__line__);
$g = false;
$td = NULL;
$m = $ma = $update = array();
#Теги, приходиться обрабатывать
while($t=$this->Mainclass->Db->Fetch_row($tags))
{
(string)$t[0]=strtolower((string)$t[0]);# в нижний регистр всё
// if(empty($t[0])) continue;
if(strcasecmp($td,$t[0])!=0)# Сраниваев строки с предыдущим, а то бывает повторяется
{
$tag[]=str_replace(array('“','”','„','"'), '',(string)$t[0]);
}
$td=$t[0];//Записываем для сравнения с предыдущим
}
$tag = array_unique($tag);//По сути то же отрезаем повторяющиеся
foreach($tag as &$t)
{
if(stripos($text, $t)!==false)
{
$leng = strlen($t);
$url_tag =urlencode($t);
preg_match_all('/.{0,20}'. $t .'.{0,20}/i', $text, $ma, PREG_OFFSET_CAPTURE);
if (!empty($ma)) {
foreach($ma[0] as $ke => &$v) {
if(preg_match('/title=.*'.$t.'.*/i',$v[0])) {
unset($ma[0][$ke]);
continue;
}
if(preg_match('/alt=.*'.$t.'.*/i',$v[0])) {
unset($ma[0][$ke]);
continue;
}
if(preg_match('/src=.*'.$t.'.*/i',$v[0])) {
unset($ma[0][$ke]);
continue;
}
if(preg_match('/href=.*'.$t.'.*/i',$v[0])) {
unset($ma[0][$ke]);
continue;
}
}
unset($v, $ke);
if (!empty($ma)) {
foreach($ma[0] as $k => &$v) {
$word = substr($text, (int)$v[1]+20, $leng);
$left = substr($text, (int)$v[1]+19, 1);
$right = substr($text, (int)$v[1]+20+$leng, 1);
if(!preg_match('/[\w]/',(string)$left))
{
if(!preg_match('/[\w]/',(string)$right))
{
$update[$k] = $v[0];
$up = '<a href="news/tag_'.$url_tag.'.html">'.$word.'</a>';
$m[$k] = mb_eregi_replace($t, $up, $v[0]);
$g = true;
}
}
}
unset($v, $ke);
}
}
}
}
if($g) {
return str_replace($update,$m,$text);
} else return $text;
}
Сообщение отредактировал Djadka - 2012-02-14, 21:37