Markdown Heading Level PHP Function
Published Tuesday, August 07, 2007 in PHP, Semantics
If you use Markdown-syntax for articles/comments or whatever like I do you know that the #-symbol defines a heading.
But depending on where an article is displayed on a page you may want to adjust the heading-levels.
On exscale.se for example the maximum allowed heading-level for an article on the index-page is 4 (<h4>). This is because the title of the article on the index-page is a <h3>.
I've created a little php-function that adjusts markdown heading-levels to whatever the user wants, so that the same article can be displayed on different pages where heading-levels aren't the same.
Usage is quite basic, just go $str = markdownHeadingLevel($str, $level); where $str of course is the string containing the markdown-text and $level the maximum allowed level.
All the headings in the string will be adjusted relatively. If the highest heading in the string is a <h1> and the lowest a <h4> and you set the level to 3 the highest will become a <h3> and the lowest a <h6>.
It works the other way around as well, a string with h4 -> h6 headings will be turned in to h1 -> h3 if you pass 1 as the level.
Obviously you need to run markdownHeadingLevel() before running markdown().
Please have a look at 100% Valid XHTML Database Output With Markdown and HTMLEntities for markdownHeadingLevel's as well as ns's source codes.





