Advertisement
fabi0

Untitled

Jun 17th, 2014
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 19.30 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4.  * To change this license header, choose License Headers in Project Properties.
  5.  * To change this template file, choose Tools | Templates
  6.  * and open the template in the editor.
  7.  */
  8.  
  9. /**
  10.  * Description of BBCode
  11.  *
  12.  * @author fabi0
  13.  */
  14.  
  15. namespace Models;
  16.  
  17. class Bb {
  18.  
  19.     /**
  20.      *
  21.      * @var type
  22.      */
  23.     private static $_search = array(
  24.         '~\[hr\]~s',
  25.         '~\[b\](.*?)\[/b\]~s',
  26.         '~\[i\](.*?)\[/i\]~s',
  27.         '~\[u\](.*?)\[/u\]~s',
  28.         '~\[quote\](.*?)\[/quote\]~s',
  29.         '~\[size=(.*?)\](.*?)\[/size\]~s',
  30.         '~\[color=(.*?)\](.*?)\[/color\]~s',
  31.         '~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
  32.         '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s',
  33.         '~\[p\](.*?)\[/p\]~s',
  34.         '~\[youtube\](.*?)\[/youtube\]~s',
  35.     );
  36.     private static $_replace = array(
  37.         '<hr/>',
  38.         '<b>$1</b>',
  39.         '<i>$1</i>',
  40.         '<span style="text-decoration:underline;">$1</span>',
  41.         '<pre>$1</pre>',
  42.         '<span style="font-size:$1px;">$2</span>',
  43.         '<span style="color:$1;">$2</span>',
  44.         '<a href="$1">$1</a>',
  45.         '<img src="$1" alt="" />',
  46.         '<p>$1</p>',
  47.         '<iframe width="560" height="315" src="//www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
  48.     );
  49.     private $_emoticonsPath;
  50.     private $_simpleReplace = array(
  51.         '[hr]' => '<hr/>',
  52.         '[b]' => '<strong>',
  53.         '[/b]' => '</strong>',
  54.         '[i]' => '<em>',
  55.         '[/i]' => '</em>',
  56.         '[p]' => '<p>',
  57.         '[/p]' => '</p>',
  58.         '[/i]' => '</em>',
  59.         // Angel Icon
  60.         array(
  61.             'icon_cases' => array(
  62.                 '(angel)'
  63.             ),
  64.             'icon_name' => 'angel'
  65.         ),
  66.         //Angry Icon
  67.         array(
  68.             'icon_cases' => array(
  69.                 ':@',
  70.                 ':-@',
  71.                 ':=@',
  72.                 'x(',
  73.                 'x-(',
  74.                 'X(',
  75.                 'X-(',
  76.                 'x=(',
  77.                 'X=(',
  78.                 '(angry)'
  79.             ),
  80.             'icon_name' => 'angry'
  81.         ),
  82.         // Bandit Icon
  83.         array(
  84.             'icon_cases' => array(
  85.                 '(bandit)'
  86.             ),
  87.             'icon_name' => 'bandit'
  88.         ),
  89.         // Headbang Icon
  90.         array(
  91.             'icon_cases' => array(
  92.                 '(headbang)',
  93.                 '(banghead)'
  94.             ),
  95.             'icon_name' => 'headbang'
  96.         ),
  97.         // Beer Icon
  98.         array(
  99.             'icon_cases' => array(
  100.                 '(beer)'
  101.             ),
  102.             'icon_name' => 'beer'
  103.         ),
  104.         // Big Smile Icon
  105.         array(
  106.             'icon_cases' => array(
  107.                 ':D',
  108.                 ':-D',
  109.                 ':=D',
  110.                 ':d',
  111.                 ':-d',
  112.                 ':=d',
  113.                 '(laugh)'
  114.             ),
  115.             'icon_name' => 'bigsmile'
  116.         ),
  117.         // Blush Icon
  118.         array(
  119.             'icon_cases' => array(
  120.                 '(blush)',
  121.                 ':$',
  122.                 ':-$',
  123.                 ':=$',
  124.                 ':”>'
  125.             ),
  126.             'icon_name' => 'blush'
  127.         ),
  128.         // Bow Icon
  129.         array(
  130.             'icon_cases' => array(
  131.                 '(bow)'
  132.             ),
  133.             'icon_name' => 'bow'
  134.         ),
  135.         // Broken Heart Icon
  136.         array(
  137.             'icon_cases' => array(
  138.                 '(brokenheart)',
  139.                 '(u)',
  140.                 '(U)'
  141.             ),
  142.             'icon_name' => 'brokenheart'
  143.         ),
  144.         // Bug Icon
  145.         array(
  146.             'icon_cases' => array(
  147.                 '(bug)',
  148.             ),
  149.             'icon_name' => 'bug'
  150.         ),
  151.         // Cake Icon
  152.         array(
  153.             'icon_cases' => array(
  154.                 '(^)',
  155.                 '(cake)',
  156.             ),
  157.             'icon_name' => 'cake'
  158.         ),
  159.         // Call Icon
  160.         array(
  161.             'icon_cases' => array(
  162.                 '(call)',
  163.             ),
  164.             'icon_name' => 'call'
  165.         ),
  166.         // Cash Icon
  167.         array(
  168.             'icon_cases' => array(
  169.                 '(cash)',
  170.                 '(mo)',
  171.                 '($)',
  172.             ),
  173.             'icon_name' => 'cash'
  174.         ),
  175.         // Clapping Icon
  176.         array(
  177.             'icon_cases' => array(
  178.                 '(clap)',
  179.             ),
  180.             'icon_name' => 'clapping'
  181.         ),
  182.         // Coffee Icon
  183.         array(
  184.             'icon_cases' => array(
  185.                 '(coffee)',
  186.             ),
  187.             'icon_name' => 'coffee'
  188.         ),
  189.         // Cool Icon
  190.         array(
  191.             'icon_cases' => array(
  192.                 '(cool)',
  193.                 '8)',
  194.                 '8-)',
  195.                 '8=)',
  196.                 'B)',
  197.                 'B-)',
  198.                 'B=)',
  199.             ),
  200.             'icon_name' => 'cool'
  201.         ),
  202.         // Crying Icon
  203.         array(
  204.             'icon_cases' => array(
  205.                 '(cry)',
  206.                 ';(',
  207.                 ';-(',
  208.                 ';=(',
  209.                 ':(',
  210.                 ':-(',
  211.                 ':=(',
  212.             ),
  213.             'icon_name' => 'crying'
  214.         ),
  215.         // Dancing Icon
  216.         array(
  217.             'icon_cases' => array(
  218.                 '(dance)',
  219.                 'o/',
  220.                 ':D/',
  221.                 ':d/',
  222.             ),
  223.             'icon_name' => 'dance'
  224.         ),
  225.         // Devil Icon
  226.         array(
  227.             'icon_cases' => array(
  228.                 '(devil)',
  229.             ),
  230.             'icon_name' => 'devil'
  231.         ),
  232.         // Doh Icon
  233.         array(
  234.             'icon_cases' => array(
  235.                 '(doh)',
  236.             ),
  237.             'icon_name' => 'doh'
  238.         ),
  239.         // Drink Icon
  240.         array(
  241.             'icon_cases' => array(
  242.                 '(drink)',
  243.                 '(d)',
  244.                 '(D)',
  245.             ),
  246.             'icon_name' => 'drink'
  247.         ),
  248.         // Drunk Icon
  249.         array(
  250.             'icon_cases' => array(
  251.                 '(drunk)',
  252.             ),
  253.             'icon_name' => 'drunk'
  254.         ),
  255.         // Dull Icon
  256.         array(
  257.             'icon_cases' => array(
  258.                 '(dull)',
  259.                 '|-(',
  260.                 '|(',
  261.                 '|=(',
  262.             ),
  263.             'icon_name' => 'dull'
  264.         ),
  265.         // Emo Icon
  266.         array(
  267.             'icon_cases' => array(
  268.                 '(emo)',
  269.             ),
  270.             'icon_name' => 'emo'
  271.         ),
  272.         // Envy Icon
  273.         array(
  274.             'icon_cases' => array(
  275.                 '(envy)',
  276.             ),
  277.             'icon_name' => 'envy'
  278.         ),
  279.         // Evil Grin Icon
  280.         array(
  281.             'icon_cases' => array(
  282.                 '(grin)',
  283.                 '>:)',
  284.                 ']:)',
  285.             ),
  286.             'icon_name' => 'evilgrin'
  287.         ),
  288.         // Middle Finger Icon
  289.         array(
  290.             'icon_cases' => array(
  291.                 '(finger)',
  292.             ),
  293.             'icon_name' => 'middlefinger'
  294.         ),
  295.         // Flower Icon
  296.         array(
  297.             'icon_cases' => array(
  298.                 '(flower)',
  299.                 '(F)',
  300.                 '(f)',
  301.             ),
  302.             'icon_name' => 'flower'
  303.         ),
  304.         // Fubar Icon
  305.         array(
  306.             'icon_cases' => array(
  307.                 '(fubar)',
  308.             ),
  309.             'icon_name' => 'fubar'
  310.         ),
  311.         // Chuckle Icon
  312.         array(
  313.             'icon_cases' => array(
  314.                 '(giggle)',
  315.                 '(chuckle)',
  316.             ),
  317.             'icon_name' => 'giggle'
  318.         ),
  319.         // Handshake Icon
  320.         array(
  321.             'icon_cases' => array(
  322.                 '(handshake)',
  323.             ),
  324.             'icon_name' => 'handshake'
  325.         ),
  326.         // Happy Icon
  327.         array(
  328.             'icon_cases' => array(
  329.                 '(happy)',
  330.             ),
  331.             'icon_name' => 'happy'
  332.         ),
  333.         // Heart Icon
  334.         array(
  335.             'icon_cases' => array(
  336.                 '(heart)',
  337.                 '(h)',
  338.                 '(H)',
  339.             ),
  340.             'icon_name' => 'heart'
  341.         ),
  342.         // Hi Icon
  343.         array(
  344.             'icon_cases' => array(
  345.                 '(hi)',
  346.             ),
  347.             'icon_name' => 'hi'
  348.         ),
  349.         // Hug Icon
  350.         array(
  351.             'icon_cases' => array(
  352.                 '(bear)',
  353.                 '(hug)',
  354.             ),
  355.             'icon_name' => 'bear'
  356.         ),
  357.         // In Love Icon
  358.         array(
  359.             'icon_cases' => array(
  360.                 '(inlove)',
  361.                 '(love)',
  362.                 '(l)',
  363.                 '(L)',
  364.             ),
  365.             'icon_name' => 'inlove'
  366.         ),
  367.         // It Wasn`t Me Icon
  368.         array(
  369.             'icon_cases' => array(
  370.                 '(wasntme)',
  371.             ),
  372.             'icon_name' => 'itwasntme'
  373.         ),
  374.         // Kiss Icon
  375.         array(
  376.             'icon_cases' => array(
  377.                 ':*',
  378.                 ':-*',
  379.                 ':=*',
  380.                 '(kiss)',
  381.             ),
  382.             'icon_name' => 'kiss'
  383.         ),
  384.         // Makeup Icon
  385.         array(
  386.             'icon_cases' => array(
  387.                 '(makeup)',
  388.                 '(kate)',
  389.             ),
  390.             'icon_name' => 'makeup'
  391.         ),
  392.         // Mmmmm Icon
  393.         array(
  394.             'icon_cases' => array(
  395.                 '(mm)',
  396.                 '(mmm)',
  397.                 '(mmmm)',
  398.             ),
  399.             'icon_name' => 'mmm'
  400.         ),
  401.         // Mooning Icon
  402.         array(
  403.             'icon_cases' => array(
  404.                 '(mooning)',
  405.             ),
  406.             'icon_name' => 'mooning'
  407.         ),
  408.         // Movie Icon
  409.         array(
  410.             'icon_cases' => array(
  411.                 '(movie)',
  412.                 '(film)',
  413.                 '(~)',
  414.             ),
  415.             'icon_name' => 'movie'
  416.         ),
  417.         // Muscle Icon
  418.         array(
  419.             'icon_cases' => array(
  420.                 '(muscle)',
  421.                 '(flex)',
  422.             ),
  423.             'icon_name' => 'muscle'
  424.         ),
  425.         // Music Icon
  426.         array(
  427.             'icon_cases' => array(
  428.                 '(music)',
  429.             ),
  430.             'icon_name' => 'music'
  431.         ),
  432.         // Lips Sealed Icon
  433.         array(
  434.             'icon_cases' => array(
  435.                 ':x',
  436.                 ':-x',
  437.                 ':X',
  438.                 ':-X',
  439.                 ':#',
  440.                 ':-#',
  441.                 ':=x',
  442.                 '=X',
  443.                 ':=#',
  444.             ),
  445.             'icon_name' => 'lipssealed'
  446.         ),
  447.         // Nerd Icon
  448.         array(
  449.             'icon_cases' => array(
  450.                 '(nerd)',
  451.                 '8-|',
  452.                 'B-|',
  453.                 '8|',
  454.                 'B|',
  455.                 '8=|',
  456.                 'B=|',
  457.             ),
  458.             'icon_name' => 'nerd'
  459.         ),
  460.         // Ninja Icon
  461.         array(
  462.             'icon_cases' => array(
  463.                 '(ninja)',
  464.             ),
  465.             'icon_name' => 'ninja'
  466.         ),
  467.         // No Icon
  468.         array(
  469.             'icon_cases' => array(
  470.                 '(no)',
  471.                 '(n)',
  472.                 '(N)',
  473.             ),
  474.             'icon_name' => 'no'
  475.         ),
  476.         // Nod Icon
  477.         array(
  478.             'icon_cases' => array(
  479.                 '(nod)',
  480.             ),
  481.             'icon_name' => 'nod'
  482.         ),
  483.         // Party Icon
  484.         array(
  485.             'icon_cases' => array(
  486.                 '(party)',
  487.             ),
  488.             'icon_name' => 'party'
  489.         ),
  490.         // Phone Icon
  491.         array(
  492.             'icon_cases' => array(
  493.                 '(phone)',
  494.                 '(ph)',
  495.                 '(mp)',
  496.             ),
  497.             'icon_name' => 'phone'
  498.         ),
  499.         // Pizza Icon
  500.         array(
  501.             'icon_cases' => array(
  502.                 '(pi)',
  503.                 '(pizza)',
  504.             ),
  505.             'icon_name' => 'pizza'
  506.         ),
  507.         // Poolparty Icon
  508.         array(
  509.             'icon_cases' => array(
  510.                 '(hrv)',
  511.                 '(poolparty)',
  512.             ),
  513.             'icon_name' => 'poolparty'
  514.         ),
  515.         // Puke Icon
  516.         array(
  517.             'icon_cases' => array(
  518.                 '(puke)',
  519.                 ':&',
  520.                 ':-&',
  521.                 ':=&',
  522.             ),
  523.             'icon_name' => 'puke'
  524.         ),
  525.         // Punch Icon
  526.         array(
  527.             'icon_cases' => array(
  528.                 '(punch)',
  529.             ),
  530.             'icon_name' => 'punch'
  531.         ),
  532.         // Rain Icon
  533.         array(
  534.             'icon_cases' => array(
  535.                 '(rain)',
  536.                 '(london)',
  537.                 '(st)',
  538.             ),
  539.             'icon_name' => 'rain'
  540.         ),
  541.         // Rock Icon
  542.         array(
  543.             'icon_cases' => array(
  544.                 '(rock)',
  545.             ),
  546.             'icon_name' => 'rock'
  547.         ),
  548.         // Rofl Icon
  549.         array(
  550.             'icon_cases' => array(
  551.                 '(rofl)',
  552.             ),
  553.             'icon_name' => 'rofl'
  554.         ),
  555.         // Sad Icon
  556.         array(
  557.             'icon_cases' => array(
  558.                 '(sad)',
  559.                 ':(',
  560.                 ':-(',
  561.                 ':=(',
  562.             ),
  563.             'icon_name' => 'sad'
  564.         ),
  565.         // Shake Icon
  566.         array(
  567.             'icon_cases' => array(
  568.                 '(shake)',
  569.             ),
  570.             'icon_name' => 'shake'
  571.         ),
  572.         // Sleepy Icon
  573.         array(
  574.             'icon_cases' => array(
  575.                 '(snooze)',
  576.                 '|-)',
  577.                 'I-)',
  578.                 'I=)',
  579.             ),
  580.             'icon_name' => 'sleepy'
  581.         ),
  582.         // Smile Icon
  583.         array(
  584.             'icon_cases' => array(
  585.                 '(smile)',
  586.                 ':)',
  587.                 ':-)',
  588.                 ':=)',
  589.             ),
  590.             'icon_name' => 'smile'
  591.         ),
  592.         // Tongue Out Icon
  593.         array(
  594.             'icon_cases' => array(
  595.                 ':P',
  596.                 ':-P',
  597.                 ':=P',
  598.                 ':p',
  599.                 ':-p',
  600.                 ':=p',
  601.                 '(tongueout)',
  602.             ),
  603.             'icon_name' => 'tongueout'
  604.         ),
  605.         // Smirk Icon
  606.         array(
  607.             'icon_cases' => array(
  608.                 '(smirk)',
  609.             ),
  610.             'icon_name' => 'smirk'
  611.         ),
  612.         // Smoke Icon
  613.         array(
  614.             'icon_cases' => array(
  615.                 '(smoke)',
  616.                 '(smoking)',
  617.                 '(ci)',
  618.             ),
  619.             'icon_name' => 'smoke'
  620.         ),
  621.         // Speechless Icon
  622.         array(
  623.             'icon_cases' => array(
  624.                 '(speechless)',
  625.                 ':|',
  626.                 ':-|',
  627.                 ':=|',
  628.             ),
  629.             'icon_name' => 'speechless'
  630.         ),
  631.         // Star Icon
  632.         array(
  633.             'icon_cases' => array(
  634.                 '(star)',
  635.                 '(*)',
  636.             ),
  637.             'icon_name' => 'star'
  638.         ),
  639.         // Sun Icon
  640.         array(
  641.             'icon_cases' => array(
  642.                 '(sun)',
  643.             ),
  644.             'icon_name' => 'sun'
  645.         ),
  646.         // Surprised Icon
  647.         array(
  648.             'icon_cases' => array(
  649.                 '(surprised)',
  650.                 ':O',
  651.                 ':-O',
  652.                 ':=O',
  653.                 ':o',
  654.                 ':-o',
  655.                 ':=o',
  656.             ),
  657.             'icon_name' => 'surprised'
  658.         ),
  659.         // Swear Icon
  660.         array(
  661.             'icon_cases' => array(
  662.                 '(swear)',
  663.             ),
  664.             'icon_name' => 'swear'
  665.         ),
  666.         // Swear Icon
  667.         array(
  668.             'icon_cases' => array(
  669.                 '(sweat)',
  670.             ),
  671.             'icon_name' => 'sweating'
  672.         ),
  673.         // Talk Icon
  674.         array(
  675.             'icon_cases' => array(
  676.                 '(talk)',
  677.             ),
  678.             'icon_name' => 'talk'
  679.         ),
  680.         // Thinking Icon
  681.         array(
  682.             'icon_cases' => array(
  683.                 '(thinking)',
  684.                 ':-?',
  685.                 ':?',
  686.                 ':=?',
  687.             ),
  688.             'icon_name' => 'thinking'
  689.         ),
  690.         // Time Icon
  691.         array(
  692.             'icon_cases' => array(
  693.                 '(time)',
  694.                 '(clock)',
  695.                 '(o)',
  696.                 '(O)',
  697.             ),
  698.             'icon_name' => 'time'
  699.         ),
  700.         // Toivo Icon
  701.         array(
  702.             'icon_cases' => array(
  703.                 '(toivo)',
  704.             ),
  705.             'icon_name' => 'toivo'
  706.         ),
  707.         // TMI Icon
  708.         array(
  709.             'icon_cases' => array(
  710.                 '(tmi)',
  711.             ),
  712.             'icon_name' => 'tmi'
  713.         ),
  714.         // Wait Icon
  715.         array(
  716.             'icon_cases' => array(
  717.                 '(wait)',
  718.             ),
  719.             'icon_name' => 'wait'
  720.         ),
  721.         // Whew Icon
  722.         array(
  723.             'icon_cases' => array(
  724.                 '(whew)',
  725.             ),
  726.             'icon_name' => 'whew'
  727.         ),
  728.         // Wink Icon
  729.         array(
  730.             'icon_cases' => array(
  731.                 '(wink)',
  732.                 ';)',
  733.                 ';-)',
  734.                 ';=)',
  735.             ),
  736.             'icon_name' => 'wink'
  737.         ),
  738.         // Wondering Icon
  739.         array(
  740.             'icon_cases' => array(
  741.                 '(wonder)',
  742.                 ':^)',
  743.             ),
  744.             'icon_name' => 'wondering'
  745.         ),
  746.         // Worried Icon
  747.         array(
  748.             'icon_cases' => array(
  749.                 '(worry)',
  750.                 ':S',
  751.                 ':s',
  752.                 ':-s',
  753.                 ':-S',
  754.                 ':=s',
  755.                 ':=S',
  756.             ),
  757.             'icon_name' => 'worried'
  758.         ),
  759.         // Yawn Icon
  760.         array(
  761.             'icon_cases' => array(
  762.                 '(yawn)',
  763.             ),
  764.             'icon_name' => 'yawn'
  765.         ),
  766.         // Yes Icon
  767.         array(
  768.             'icon_cases' => array(
  769.                 '(yes)',
  770.                 '(y)',
  771.                 '(Y)',
  772.                 '(ok)',
  773.                 '(OK)',
  774.                 '(Ok)',
  775.             ),
  776.             'icon_name' => 'yes'
  777.         ),
  778.         // Mail Icon
  779.         array(
  780.             'icon_cases' => array(
  781.                 '(mail)',
  782.                 '(e)',
  783.                 '(m)',
  784.                 '(E)',
  785.                 '(M)',
  786.             ),
  787.             'icon_name' => 'mail'
  788.         ),
  789.     );
  790.  
  791.     public function parse($code) {
  792.         foreach ($this->_simpleReplace as $key => $value) {
  793.             if (is_array($value)) {
  794.                 foreach ($value['icon_cases'] as $icon_case) {
  795.                     $code = str_replace($icon_case, "<img src='" . $this->_emoticonsPath . $value['icon_name'] . ".gif'/>", $code);
  796.                 }
  797.             } else {
  798.                 $code = str_replace($key, $value, $code);
  799.             }
  800.         }
  801.         echo $code;
  802.     }
  803.  
  804.     public function setPath($path) {
  805.         $this->_emoticonsPath = $path;
  806.         return $this;
  807.     }
  808.  
  809. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement