I am using Markdown in PHP and have written a regex to automatically wrap the text inside if any <h1>-<h6> tag with a named-anchor (<a name="Text">Text</a>) for linking.
Here is the PHP:
$text = '<p>This is a</p>
<h1>Test</h1>
<p>to see if this works </p>';
$regex = '/\<h([0-6]{1})\>(.+)\<\/h[0-6]{1}\>/';
echo preg_replace($regex, '<h$1><a name="$2">$2</a></h$1>', $text);
And the result is:
<p>This is a</p>
<h1><a name="Test">Test</a></h1>
<p>to see if this works </p>
The important thing here is, Markdown is light-weight and easy on storage space. Manually adding in the named-anchors kind of defeats the purpose of using Markdown altogether.
This method works fine for testing purposes, but I would like to know (and here is the question) if there is a better, more language-agnostic, way to accomplish this.
NOTE: The client this is for, wants it this way because they feel even the native Markdown syntax may alienate their more “computer-illiterate” users: # [Text](#Text). They simply want to type: # Text
Seeing as you’re already using PHP, you should really take a look at the Markdown Extra implementation. From the MDE docs: