Новичок
Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.4.2007
Репутация: нет Всего: нет
|
Есть функция обрабатывающая bbcode. В принципе работает нормально, но вот с цветами глючит. заменяет один цвет на другой, "именной" на код и притом неверный. Да кроме того если цветов несколько со сдвигом. в хотя по логике(насколько я могу судить) всё верно. Как исправить чтобы обрабатывалось корректно. и из-за чего происходит замена цвета? пример обрабатываемого текста: Код | [size=16] Melat: Я позитивист. Оттого мне вкусно жить! [/size]
[color=darkred][i]Наша встреча с королевой Демонов носила полуофициальный характер, к тому же собеседник оказался интересным, на вопросы отвечала тут же и вполне искренне. Поэтому сырого материала получилось много и мне пришлось отшлифовывать. Оставил то, что представляет интерес, включая и некоторые «лирические отступления», чтобы не исказить образ. Впрочем, вот что из всего этого получилось: [/i][/color]
Drakosha для начала - как звучит официально Ваш титул?)
Melat [color=darkblue]предпочитаю банальный титул - Глава клана. Однако на Королеву и Люцифера тоже отзываюсь.))) [/color]
Drakosha вот вот...)) к тому же мы, журналюги, народ пытливого ума. Порывшись в первоисточниках, например тут: http://almanac.talevision.com.ua/poems/chombi/chombi9a.html в глаза бросилось "грозная Мелат"... неужто и взаправду такая, на первый взгляд, обаятельная девушка может быть «грозной»?:)
|
после обработки: Код |
<font style="" 16pt\=""> Melat: Я позитивист. Оттого мне вкусно жить! </font></strong><br> <br> <br> <font color="#0000d0"><em><strong>Наша встреча с королевой Демонов носила полуофициальный характер, к тому же собеседник оказался интересным, на вопросы отвечала тут же и вполне искренне. Поэтому сырого материала получилось много и мне пришлось отшлифовывать. Оставил то, что представляет интерес, включая и некоторые «лирические отступления», чтобы не исказить образ. Впрочем, вот что из всего этого получилось: </strong></em>[/color]<br> <br> <strong>Drakosha</strong> <br> для начала - как звучит официально Ваш титул?)<br> <br> <strong>Melat</strong> <br>
<font color="#00000e">предпочитаю банальный титул - Глава клана. Однако на Королеву и Люцифера тоже отзываюсь.))) [/color]<br> <br> <strong>Drakosha</strong> <br> вот вот...)) к тому же мы, журналюги, народ пытливого ума. Порывшись в первоисточниках, например тут: <a href="http://almanac.talevision.com.ua/poems/chombi/chombi9a.html" target="\"_blank\"">http://almanac.talevision.com.ua/poems/chombi/chombi9a.html</a> в глаза бросилось "грозная Мелат"... неужто и взаправду такая, на первый взгляд, обаятельная девушка может быть «грозной»?:)<br>
|
Код | function postify($message, $smileyoff='no', $bbcodeoff='no', $allowsmilies='yes', $allowhtml='yes', $allowbbcode='yes', $allowimgcode='yes', $ignorespaces=false, $ismood="no", $wrap="yes") { global $imgdir, $bordercolor, $table_words, $table_forums, $table_smilies, $db, $smdir, $smiliecache, $censorcache, $smiliesnum, $wordsnum, $versionbuild, $lang, $fontsize;
// $message = checkOutput($message, $allowhtml, '', true);
// $message = censor($message, $ignorespaces);
$bballow = ($allowbbcode == 'yes' || $allowbbcode == 'on') ? (($bbcodeoff != 'off' && $bbcodeoff != 'yes') ? true : false) : false; $smiliesallow = ($allowsmilies == 'yes' || $allowsmilies == 'on') ? (($smileyoff != 'off' && $smileyoff != 'yes') ? true : false) : false; $message = preg_replace( '/\[size=(.*)\]/iU','<font style="font-size: $1pt">',$message); $message = str_replace("[/size]","</font>",$message); $message = preg_replace( '/\[url=http:\/\/(.*)\](.*)\[\/url\]/iU', '<a href=http://$1>$2</a>',$message); $message = preg_replace( '/\[url=(.*)\](.*)\[\/url\]/iU', '<a href=http://$1>$2</a>',$message); $message = preg_replace( '/\[url\]http:\/\/(.*)\[\/url\]/iU', '<a href=http://$1>$1</a>',$message); $message = preg_replace( '/\[url\](.*)\[\/url\]/iU', '<a href=http://$1>$1</a>',$message); $message = preg_replace( '/\[color=(.*)\]/iU','<font color="$1">',$message);
if ( $bballow) { $message = stripslashes($message);
if ( $ismood == "yes") { $message = str_replace(array('[poem]', '[/poem]', '[quote]', '[/quote]', '', '[list]', '[/list]', '[list=1]', '[list=a]', '[list=A]', '[/list=1]', '[/list=a]', '[/list=A]'), '[center]', '[/center]', '', $message); }
$begin = array( 0 => '', 1 => '[i]', 2 => '[u]', 3 => '[poem]', 4 => '[marquee]', 5 => '[blink]', 6 => '[strike]', 7 => '[quote]', 8 => 'Код | ', 9 => '[list]', 10 => '[list=1]', 11 => '[list=a]', 12 => '[list=A]', 13 => '[center]' );
$end = array( 0 => '[/b]', 1 => '[/i]', 2 => '[/u]', 3 => '[/poem]', 4 => '[/marquee]', 5 => '[/blink]', 6 => '[/strike]', 7 => '[/quote]', 8 => ' |
', 9 => '[/list]', 10 => '[/list=1]', 11 => '[/list=a]', 12 => '[/list=A]', 13 => '[/center]' );
foreach ($begin as $key=>$value) { $check = substr_count($message, $value) - substr_count($message, $end[$key]); if ( $check > 0) { $message = $message.str_repeat($end[$key], $check); }elseif ( $check < 0) { $message = str_repeat($value, abs($check)).$message; } }
$find = array( 0 => '[b]', 1 => '', 2 => '[i]', 3 => '[/i]', 4 => '[poem]', 5 => '[/poem]', 6 => '[u]', 7 => '[/u]', 8 => '[marquee]', 9 => '[/marquee]', 10 => '[blink]', 11 => '[/blink]', 12 => '[strike]', 13 => '[/strike]', 14 => '[vinfo]', 15 => '[quote]', 16 => '[/quote]', 17 => '', 19 => '[list]', 20 => '[/list]', 21 => '[list=1]', 22 => '[list=a]', 23 => '[list=A]', 24 => '[/list=1]', 25 => '[/list=a]', 26 => '[/list=A]', 27 => '[credits]', 28 => '[*]', 29 => '[buildedition]', 30 => '<br />', 31 => '[center]', 32 => '[/center]' );
$replace = array( 0 => '<strong>', 1 => '</strong>', 2 => '<em>', 3 => '</em>', 4 => '<div align=\"center\"><em>', 5 => '</div></em>', 6 => '<u>', 7 => '</u>', 8 => '<marquee>', 9 => '</marquee>', 10 => '<blink>', 11 => '</blink>', 12 => '<strike>', 13 => '</strike>', 14 => '<strong>'.strrev('suxeN - 1.9.1 BMX').'</strong>', 15 => "</font><table align=\"center\" class=\"quote\" cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"quote\">$lang[textquote]</td></tr><tr><td class=\"quotemessage\">", 16 => "</td></tr></table><font class=\"mediumtxt\">", 17 => "</font><table align=\"center\" class=\"code\" cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"code\">$lang[textcode]</td></tr><tr><td class=\"codemessage\">", 18 => "</td></tr></table><font class=\"mediumtxt\">", 19 => '<ul type="square">', 20 => '</ul>', 21 => '<ol type="1">', 22 => '<ol type="A">', 23 => '<ol type="A">', 24 => '</ol>', 25 => '</ol>', 26 => '</ol>', 27 => 'XMB 1.9.1 Main Developers - Tularis, vanderaj, Richard, RevMac, Daf, Ixan, John Briggs. For More Information On Other Staff - Visit xmbforum.com', 28 => '<li />', 29 => '<strong>Build ID: '.$versionbuild.'</strong>', 30 => ' <br>', 31 => '<center>', 32 => '</center>' );
$message = str_replace($find, $replace, $message);
if ( $smiliesallow) { // $message = smile($message); }
$patterns = array(); $replacements = array();
$patterns[] = "#\[color=([^\"'<>]*?)\](.*?)\[/color\]#Ssi"; $replacements[] = '<font color="\1">\2</font>';
$patterns[] = "#\[size=([+-]?[0-9]{1,2})\](.*?)\[/size\]#Ssie"; $replacements[] = '"<font style=\"font-size: ".createAbsFSizeFromRel(\'$1\').";\">".stripslashes(\'$2\')."</font>"';
$patterns[] = "#\[font=([a-z\r\n\t 0-9]+)\](.*?)\[/font\]#Ssi"; $replacements[] = '<font face="\1">\2</font>';
$patterns[] = "#\[align=([a-z]+)\](.*?)\[/align\]#Ssi"; $replacements[] = '<p align="\1">\2</p>';
if ($allowimgcode != 'no' && $allowimgcode != 'off') {
if (!stristr($message, 'javascript:') && (stristr($message, 'jpg[/img]') || stristr($message, 'jpeg[/img]') || stristr($message, 'gif[/img]') || stristr($message, 'png[/img]') || stristr($message, 'bmp[/img]') || stristr($message, 'php[/img]'))) { $patterns[] = '#\[img\](http[s]?|ftp[s]?){1}://([:a-z\\./_\-0-9%~]+){1}(\?[a-z=_\-0-9&;~]*)?\[/img\]#Smi'; $replacements[] = '<img src=\1://\2\3 border="0" alt=\1://\2\3/>'; //
$patterns[] = "#\[img=([0-9]*?){1}x([0-9]*?)\](http[s]?|ftp[s]?){1}://([:~a-z\\./0-9_\-%]+){1}(\?[a-z=0-9&_\-;~]*)?\[/img\]#Smi"; $replacements[] = '<img width="\1" height="\2" src="\3://\4\5" alt="\3://\4\5" border="0" />'; }
$patterns[] = "#\[flash=([0-9]*?){1}x([0-9]*?)\]([^\"'<>]*?)\[/flash\]#Ssi"; //$replacements[] = '<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://active.macromedia.com/flash2/cabs/swflash.cab#version=6,0,0,0 ID=main WIDTH=\1 HEIGHT=\2><PARAM NAME=movie VALUE=\3><PARAM NAME=loop VALUE=false><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=best><EMBED src=\3 loop=false menu=false quality=best WIDTH=\1 HEIGHT=\2 TYPE=application/x-shockwave-flash PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash></EMBED></OBJECT>'; $replacements[] = '<object type="application/x-shockwave-flash" data="$3" width="$1" height="$2"><param name="movie" value="$3" /></object>'; }
//$patterns[] = '#([^\'"=\]]|^)(http[s]?|ftp[s]?|gopher|irc){1}://([:a-z_\-\\./0-9%~]+){1}(\?[a-z=0-9.\-_&;]*)?(\#[a-z0-9._]+)?#Smi'; $patterns[] = '#([^\'"=\]]|^)(http[s]?|ftp[s]?|gopher|irc){1}://([a-z0-9.]+[a-z0-9])(:[0-9]+)?(/[a-z0-9./~\-_\\%]*)?(\?[a-z=0-9.\-\+_&;]*)?(\#[a-z0-9._]+)?#Smi'; $replacements[] = '\1<a href=\2://\3\4\5\6\7 target="_blank">\2://\3\4\5\6\7</a>';
$patterns[] = "#\[url\]([a-z]+?://){1}([^\"'<>]*?)\[/url\]#Smi"; $replacements[] = '<a href=\1\2 target="_blank">\1\2</a>';
$patterns[] = "#\[url\]([^\"'<>]*?)\[/url\]#Smi"; $replacements[] = '<a href="http://\1" target="_blank">\1</a>';
// Do we need this? yes! $patterns[] = "#\[url=([a-z]+?://){1}([^\"'<>]*?)\](.*?)\[/url\]#Smi"; $replacements[] = '<a href="\1\2" target="_blank">\3</a>';
$patterns[] = "#\[url=([^\"'<>]*?)\](.*?)\[/url\]#Smi"; $replacements[] = '<a href="http://\1" target="_blank">\2</a>';
$patterns[] = "#\[email\]([^\"'<>]*?)\[/email\]#Smi"; $replacements[] = '<a href="mailto:\1">\1</a>';
$patterns[] = "#\[email=([^\"'<>]*?){1}([^\"]*?)\](.*?)\[/email\]#Smi"; $replacements[] = '<a href="mailto:\1\2">\3</a>';
$message = preg_replace($patterns, $replacements, $message);
$message = addslashes($message); }
else{ if ( $smiliesallow) { // $message = smile($message); } }
$message = nl2br($message); if ( $wrap == "yes") { $message = wordwrap($message, 150, "\n", 1); $message = preg_replace('#(\[/?.*)\n(.*\])#mi', '\\1\\2', $message); }
return $message; }
|
Это сообщение отредактировал(а) woin - 2.5.2007, 17:47
Присоединённый файл ( Кол-во скачиваний: 4 )
function.php 10,81 Kb
|