Use of Markdown Extra in a forum

Michel Fortin michel.fortin at
Thu Apr 19 07:35:09 EDT 2007

Le 2007-04-19 à 4:24, benoit at a écrit :

> I have tried to implement PHP Markdown Extra in a forum (PunBB) and

> found that however well each message is translated, there are

> collisions when different messages in the same page have the same

> inside link names (footnotes, title links).


> I guess similar issues are met on wiki implementations, so

> solutions adopted for wikis might be what I am looking for.


> Has this question already been met?

Yes and no. There is a provision in PHP Markdown Extra to help solve
this problem, althoug it requires additional input. It is also buggy
right now.

The way this should be done is by setting the `fn_id_prefix` property
on the parser instance you're using. (If you're currently using the
Markdown function, you'll have to create your own parser instance.)
Like this:

$parser = new MarkdownExtra_Parser;
$parser->fn_id_prefix = "$post->id."; // anything unique to your
$html = $parser->transform($post->text);

You can also reuse the same parser object and change the
`fn_id_prefix` property before each call to `transform`.

But there is a bug right now (version 1.1.2) which prevent footnotes
from working altogether when the prefix is not empty. The fix is to
change the first line of the `_stripFootnotes_callback` function of
the `MarkdownExtra_Parser` which looks like this:

$note_id = $matches[1];

to this:

$note_id = $this->fn_id_prefix . $matches[1];

After this change, you can use `fn_id_prefix` as explained above. I
should release a an update soon to fix this.

I hope this helps.

- - -

As of title ids, it is expected they should be different enought to
not clash between eachother. How would you link to them without
knowing the prefix anyway?

- - -

> May I suggest the addition of an _option_ to add a key to each link

> or link pair (`[^1]` and `[^1]: ...` for instance), that could help

> insulate each message from its neighbors?


> I could be done by defining a random 6-8-char key for each instance

> of PHP Markdown, and appending or prepending it to the name of each

> element in the html output.

A random string would make links to footnotes change every time the
page is reprocessed. This is something I want to avoid as it would
break bookmarked links.

So PHP Markdown Extra isn't going to add random strings to footnote
ids by itself. Of course, if you want, you could fill the
`fn_id_prefix` property with a random prefix every time, which would
yeild the same result.

Michel Fortin
michel.fortin at

More information about the Markdown-Discuss mailing list