Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Oct 6th, 2008 | Syntax: None | Size: 1.12 KB | Hits: 32 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. <?php
  2. function parse_bb($text)
  3. {
  4.         $new_t = nl2br($text);
  5.         $old_t = '';
  6.  
  7.         while ( $old_t != $new_t )
  8.         {
  9.                 $old_t = $new_t;
  10.                 $new_t = preg_replace_callback('#\[(.+)=?(.*?)?\](.*?)\[\/\1\]#', 'parse_bb_callback', $new_t);
  11.         }
  12.         return $new_t;
  13. }
  14. function parse_bb_callback($hit)
  15. {
  16.         $tag = $hit[1];
  17.         $attr = $hit[2];
  18.         $encl = $hit[3];
  19.  
  20.         switch ( $tag )
  21.         {
  22.                 case 'b':
  23.                         return "<b>$encl</b>";
  24.                         break;
  25.                 case 'i':
  26.                         return "<i>$encl</i>";
  27.                         break;
  28.                 case 'u':
  29.                         return "<u>$encl</u>";
  30.                         break;
  31.                 case 'h3':
  32.                         return "<h3>$encl</h3>";
  33.                         break;
  34.                 case 'img':
  35.                 return "<img src=\"$attr\" alt=\"$encl\" />";
  36.                         break;
  37.                 case 'lnk':
  38.                         if ( $encl == '' )
  39.                         {
  40.                                 return "<a href=\"$attr\" target=\"_blank\">$attr</a>";
  41.                         }
  42.                         return "<a href=\"$attr\">$encl</a>";
  43.                         break;
  44.                 case 'mailto':
  45.                         $mail = preg_replace( "/(.)/se", " '&#' . ord( '\\1' ) . ';' ", $attr );
  46.                         return "<a href=\"mailto:$mail\">$mail</a>";
  47.                         break;
  48.                 case 'html':
  49.                         $encl = html_entity_decode($encl);
  50.                         $encl = str_replace('&', '&amp;', $encl);
  51.                         return $encl;
  52.                         break;
  53.                 default:
  54.                         return $hit[0];
  55.         }
  56. }
  57. ?>