Тема: Parser Smilies
добавление смайлов стандартными хухами сделано очень не удобно. Заменить стандартный смайлы без извращенность очень сложно ![]()
Для форума который расширяется правкой кода или сборками - этой еще подходит:)
главная проблема в
$text = preg_replace("#(?<=[>\s])".preg_quote($smiley_text, '#')."(?=\W)#m", '<img src="'.$base_url.'/img/smilies/'.$smiley_img.'" width="15" height="15" alt="'.substr($smiley_img, 0, strrpos($smiley_img, '.')).'" />', $text);предлагаю изменить массив smiles
$smilies = array(
':)' =>
array(
'title' => 'Smile',
'img' => 'smile.png'
),
'=)' =>
array(
'title' => 'Smile',
'img' => 'smile.png'
),
':|' =>
array(
'title' => 'Neutral',
'img' => 'neutral.png'
),
':(' =>
array(
'title' => 'Sad',
'img' => 'sad.png'
),
'=(' =>
array(
'title' => 'Sad',
'img' => 'sad.png'
),
':D' =>
array(
'title' => 'Big smile',
'img' => 'big_smile.png'
),
'=D' =>
array(
'title' => 'Big smile',
'img' => 'big_smile.png'
),
':o' =>
array(
'title' => 'Yikes',
'img' => 'yikes.png'
),
':O' =>
array(
'title' => 'Yikes',
'img' => 'yikes.png'
),
';)' =>
array(
'title' => 'Wink',
'img' => 'wink.png'
),
':/' =>
array(
'title' => 'Hmm',
'img' => 'hmm.png'
),
':P' =>
array(
'title' => 'Tongue',
'img' => 'tongue.png'
),
':p' =>
array(
'title' => 'Tongue',
'img' => 'tongue.png'
),
':lol:' =>
array(
'title' => 'Lol',
'img' => 'lol.png'
),
':mad:' =>
array(
'title' => 'Mad',
'img' => 'mad.png'
),
':rolleyes:' =>
array(
'title' => 'Rolleyes',
'img' => 'roll.png'
),
':cool:' =>
array(
'title' => 'Cool',
'img' => 'cool.png'
)
);и саму функцию do_smilies
function do_smilies($text)
{
global $forum_config, $base_url, $smilies;
$return = ($hook = get_hook('ps_do_smilies_start')) ? eval($hook) : null;
if ($return != null)
return $return;
$text = ' '.$text.' ';
foreach ($smilies as $smiley_text => $smiley_img)
{
if (strpos($text, $smiley_text) !== false)
{
$src = isset($smiley_img['src']) ? $smiley_img['src'] : $base_url.'/img/smilies/';
$width = isset($smiley_img['width']) ? $smiley_img['width'] : '15';
$height = isset($smiley_img['height']) ? $smiley_img['height'] : '15';
$text = preg_replace("#(?<=[>\s])".preg_quote($smiley_text, '#')."(?=\W)#m", '<img src="'.$src.$smiley_img['img'].'" width="'.$width.'" height="'.$height.'" alt="'.$smiley_text.'" title="'.$smiley_img['title'].'"/>', $text);
}
}
$return = ($hook = get_hook('ps_do_smilies_end')) ? eval($hook) : null;
return substr($text, 1, -1);
}а какие у вас есть идеи?