Composer require erusev/parsedown可一键安装并自动加载Parsedown类;需确保在已初始化Composer的项目根目录执行,实例化后调用text()解析Markdown为HTML,注意安全模式、中文锚点及文件读取需手动处理。

直接用 Composer require 安装 Parsedown
不需要手动下载或配置 autoload,composer require erusev/parsedown 一行命令就能把最新稳定版 Parsedown 拉进项目。它不依赖其他包,安装后自动注册 PSR-4 自动加载规则,Parsedown 类开箱即用。
常见错误:执行命令时提示 Command "require" is not defined,说明当前目录下没有 composer.json 或未初始化 Composer 环境。先运行 composer init 或确保在已有项目的根目录操作。
在 PHP 中实例化并解析 Markdown 字符串
安装完后,不用额外 require 或 include,Composer 的 autoloader 会自动加载类。最简用法就是 new 一个实例,调用 text() 方法:
$parsedown = new Parsedown();
$html = $parsedown->text('# Hello World');
注意点:
-
text()接收字符串,返回已转义的 HTML(含、等标签),不带外部 CSS 或 JS - 如果输入含用户提交内容,Parsedown 默认不过滤 HTML 标签,需手动启用安全模式:
$parsedown->setSafeMode(true) - 不支持 GFM 表格、任务列表等扩展语法,如需这些,得换
erusev/parsedown-extra(要单独 require)
与 Laravel / Symfony 等框架集成时的注意事项
在现代框架里,通常不需要手动 new 实例——直接在服务容器或控制器中 type-hint Parsedown 即可,但前提是框架支持自动绑定。Laravel 默认不绑定该类,所以更稳妥的做法是:
- 在
AppServiceProvider::register()中绑定单例:$this->app->singleton(Parsedown::class, function () { return new Parsedown(); }); - 或者干脆在需要的地方用
app(Parsedown::class)获取实例,避免全局污染 - Symfony 用户注意:不要把它加到
services.yaml里当 public service,除非真有跨多个 bundle 调用的需求
性能上无明显负担,但频繁创建实例(比如在循环里 new)不如复用单例,尤其在 CLI 命令或队列任务中容易被忽略。
调试解析结果时容易漏掉的细节
输出 HTML 看起来“没渲染”,常误以为解析失败,其实是浏览器没显示原始标签。建议用 echo htmlspecialchars($html) 查看真实输出,或直接 inspect 元素确认结构。
另一个典型问题:中文标题生成的 ID 锚点为空(如 ## 测试 → )。这是 Parsedown 默认行为,不支持中文 slug,若需锚点,得自己扩展 headerId() 方法或改用其他解析器。
最后提醒:Parsedown 不处理 Markdown 文件读取,file_get_contents() 和 text() 之间那一步得自己写,别指望它自动加载路径。










