1. PHP / Говнокод #4889

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    function replaceBBCodes($text){ 
    $text=str_replace("/\n/m", "$0<br/>", $text);
    $text = htmlspecialchars($text);
    $text=nl2br($text);
    $text=stripslashes($text);   
    $text=str_replace("!#3040#!", "&", $text);
    $text=str_replace('[b]', '<strong>', $text);
    $text=str_replace('[/b]', '</strong>', $text);
    $text=str_replace('[i]', '<em>', $text);
    $text=str_replace('[/i]', '</em>', $text);
    $text=str_replace('[u]', '<u>', $text);
    $text=str_replace('[/u]', '</u>', $text);
    $text=str_replace('[s]', '<s>', $text);
    $text=str_replace('[/s]', '</s>', $text);
    $text=str_replace('[left]', '<span class="bb_left">', $text);
    $text=str_replace('[/left]', '</span>', $text);
    $text=str_replace('[right]', '<span class="bb_right">', $text);
    $text=str_replace('[/right]', '</span>', $text);
    $text=str_replace('[center]', '<span class="bb_center">', $text);
    $text=str_replace('[/center]', '</span>', $text);
    $text=str_replace('[justify]', '<span class="bb_justify">', $text);
    $text=str_replace('[/justify]', '</span>', $text);
    $text=preg_replace("#\[color=(.*?)](.*?)\[/color\]#si", '<span style="color:$1">$2</span>',$text);
    $text=preg_replace("#\[size=(.*?)](.*?)\[/size\]#si", '<span style="font-size:$1px">$2</span>',$text);
    $text=preg_replace("#\[a=(.*?)](.*?)\[/a\]#si", '<a href="$1">$2</a>',$text);
    $text=preg_replace("#\[img=(.*?)](.*?)\[/img\]#si", '<img src="$2" alt="images" style="float:$1;margin:5px;" />',$text);
    $text=preg_replace("#\[youtube](.*?)\[/youtube\]#si",'<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/$1"></param><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350"></embed></object>',$text);
    $text=preg_replace("#\[youtube](.*?)\[/youtube\]#si",'<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/$1"></param><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350"></embed></object>',$text);
    $text=preg_replace("#\[spoiler=(.*?)](.*?)\[/spoiler\]#si", '<div id=\'video\'><h1 class="headtt2" onclick="expandit(this)">$1</h1>
    <div style="display:none;" class="sdsp">         $2</div> </div>', $text);
    $text=preg_replace("#\[podspoiler=(.*?)](.*?)\[/podspoiler\]#si", '<h1 class="headtt" onclick="expandit(this)">$1</h1>
    <div style="display:none;text-align:center">$2</div>', $text);
    return $text; 
    }

    Запостил: qbasic, 10 Декабря 2010

    Комментарии (24) RSS

    • ага.
      тогда в чем смысл вообще BB-кодов?
      [b] точь-в-точь соответствует <strong> и т.д.
      Ответить
      • а то что [ b ] [ / b] невалид - это нормально?
        Ответить
        • я еще могу понять, что пыхобыдло не знает, что существуют FST, поэтому изворачиваются с replace, но в чем сакральный смысл #3040# -> & ?
          Ответить
        • наверное, это и хорошо
          Ответить
    • ну в каком еще языке так могут написать?)))

      это phpbb кста?)

      "bb_center" это вообще фееричный долбоебизм
      Ответить
    • то что тег может быть не закрыт — это нормально.
      Ответить
    • тащемто есть один кошерный способ сделать ббкод.
      во-первых его надо сделать визивимным: тоесть таги должны быть семантические, а не визуальные. Никакого болда: только "важный", "цитата" итд.
      во-вторых надо разбить на лексемы, построить дерево (что бы ничего ни с чем не пересекалось. А если пересекается -- вылечить путем насильственного закрывания, и удаления непарных тагов). И потом сгенерить HTML.

      Тогда он всегда будет красивый, внятный, и валидный.

      Но куда пхпшникам до таких матанов
      Ответить
    • я думал что пистец бывает - я не думал что он может быть на столько веселый
      полчаса на полу от боли в животе и красными глазами пишу коммент)
      Ответить

    Добавить комментарий