PHP实现markdown
使用 Parsedown 库实现 Markdown 解析
Parsedown 是一个轻量级的 PHP Markdown 解析库,支持标准的 Markdown 语法。安装方式可通过 Composer 或直接下载源码。
require_once 'Parsedown.php';
$parsedown = new Parsedown();
echo $parsedown->text('# Hello, Markdown!');
使用 CommonMark 实现标准化解析
CommonMark 是 Markdown 的标准化版本,PHP 实现可通过 league/commonmark 库完成。支持更严格的语法规范。

use League\CommonMark\CommonMarkConverter;
$converter = new CommonMarkConverter();
echo $converter->convertToHtml('Bold text');
自定义 Markdown 扩展语法
通过继承 Parsedown 或 CommonMark 的解析器类,可扩展自定义语法。例如添加高亮功能:

class ExtendedParsedown extends Parsedown {
protected function inlineHighlight($excerpt) {
if (preg_match('/==([^==]+)==/', $excerpt['text'], $matches)) {
return [
'extent' => strlen($matches[0]),
'element' => ['name' => 'span', 'attributes' => ['class' => 'highlight'], 'text' => $matches[1]]
];
}
}
}
安全防护与过滤
解析用户输入的 Markdown 时需防范 XSS 攻击。CommonMark 提供了安全配置选项:
$environment = new League\CommonMark\Environment\Environment();
$environment->addExtension(new League\CommonMark\Extension\CommonMarkCoreExtension());
$environment->mergeConfig(['html_input' => 'escape']);
$converter = new CommonMarkConverter([], $environment);
性能优化建议
对于高频使用的场景,可缓存解析结果。例如配合文件缓存:
$cacheKey = md5($markdownText);
if (!$html = $cache->get($cacheKey)) {
$html = $parsedown->text($markdownText);
$cache->set($cacheKey, $html, 3600);
}
echo $html;






