我在 PHP 中使用 Markdown 并编写了一个正则表达式,如果有任何<h1>-<h6>
带有命名锚(<a name="Text">Text</a>
)的标签用于链接,则自动将文本包装在其中。
这是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);
结果是:
<p>This is a</p>
<h1><a name="Test">Test</a></h1>
<p>to see if this works </p>
这里重要的是,Markdown 重量轻且易于存储空间。手动添加命名锚点完全违背了使用 Markdown 的目的。
这种方法可以很好地用于测试目的,但我想知道(这里是问题)是否有更好、更与语言无关的方法来实现这一点。
注意:这是给客户的,想要这样,因为他们觉得即使是原生 Markdown 语法也可能疏远他们更多“计算机文盲”的用户:# [Text](#Text)
. 他们只想输入:# Text