Format Code Inside PRE Tags within TextMate Using PHP

By  on  

Creating blog posts has been greatly sped up by the use of TextMate. I've created a bunch of blog formatting commands to do various operations on posts including adding paragraph tags, formatting headings, and generating content based on string templates. One of my favorites is a PHP function that html-entitizes (your word of the day) code with PRE tags.

The PHP

function replace_angles($matches) {
return str_replace($matches[1],htmlentities($matches[1]),$matches[0]);
}
$file = file_get_contents('php://stdin');
$file = preg_replace_callback('/<pre.*?>(.*?)<\/pre>/imsu',replace_angles, $file);
echo $file;

The first step is reading in the buffer's contents. The next step is using PHP to extract the PRE code and replace it with htmlentities(code). Mission accomplished! I use this frequently within my blog -- maybe you can too.

Recent Features

Incredible Demos

  • By
    New MooTools Plugin:  ElementFilter

    My new MooTools plugin, ElementFilter, provides a great way for you to allow users to search through the text of any mix of elements. Simply provide a text input box and ElementFilter does the rest of the work. The XHTML I've used a list for this example...

  • By
    iPhone Click Effect Using MooTools or jQuery

    One thing I love about love about Safari on the iPhone is that Safari provides a darkened background effect when you click a link. It's the most subtle of details but just enforces than an action is taking place. So why not implement that...

Discussion

  1. Have you looked into using markdown in textmate instead? It’s already got a lot of what you’re talking about :D

  2. Dave Demon

    hello Sir,
    I would like to ask u some question. I tried to use htmlentities like that
    htmlentities('hello', ENT_QUOTES);
    but it is not working. (also htmlspecialchars ) I would like to know how to do this problem.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!