A lightweight lexical string parser for BBCode styled markup.
Pull request Compare This branch is 1 commit ahead, 384 commits behind milesj:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Decoda v3.3.3

A lightweight lexical string parser for BBCode styled markup.


Version(s) 3.x are not backwards compatible with 2.9 and lower. The newer versions were completely rewritten as a lexical parser that examines the string stack, where as the older versions were using archaic regex parsing. The newer versions also boast a very powerful filter and hook system, so your old code will need to be changed to support the newer functionality.


  • PHP 5.2, 5.3



  • Parses custom code to valid (X)HTML markup
  • Setting to make links and emails auto-clickable
  • Setting to use shorthand text for links and emails
  • Provides Filters to parse markup and custom code
  • Provides Hooks to execute during the parsing cycle
  • Provides functionality to render complex markup using a template system
  • Can censor offensive words
  • Can convert smiley faces into images
  • Basic support for localized messages
  • Supports a wide range of tags
  • Fixes incorrectly nested tags by removing the broken/unclosed tags
  • Logs errors for validation


The following filters and supported tags are available.

  • Default: b, i, u, s, sup, sub
  • Block: align, float, hide, alert, note, div, spoiler, center
  • Code: code, var
  • Email: email, mail
  • Image: image, img
  • List: list, olist, li
  • Quote: quote
  • Text: font, size, color, h1-h6
  • Url: url, link
  • Video: video


The following hooks are available.

  • Censor: Censors all words found within config/censored.txt
  • Clickable: Converts all non-tag wrapped URLs and emails into clickable links
  • Emoticon: Converts all smilies found within config/emoticons.json into emoticon images


  • URLs that begin with www will not be converted (intentional)
  • Certain videos are not supported as their embed code does not match the URL in the address bar


Thorough documentation can be found here: http://milesj.me/code/php/decoda