html_to_markdown

这个 html_to_markdown 过滤器将HTML块转换为降价:

1
2
3
4
5
{% apply html_to_markdown %}
    <html>
        <h1>Hello!</h1>
    </html>
{% endapply %}

您也可以在整个模板上使用过滤器 include

1
{{ include('some_template.html.twig')|html_to_markdown }}

注解

这个 html_to_markdown 过滤器是 MarkdownExtension 默认情况下不安装。先安装:

1
$ composer require twig/markdown-extra

在Symfony项目中,可以通过安装 twig/extra-bundle

1
$ composer require twig/extra-bundle

或者在Twig环境中显式添加扩展:

use Twig\Extra\Markdown\MarkdownExtension;

$twig = new \Twig\Environment(...);
$twig->addExtension(new MarkdownExtension());

如果不使用Symfony,则还必须注册扩展运行时::

use Twig\Extra\Markdown\DefaultMarkdown;
use Twig\Extra\Markdown\MarkdownRuntime;
use Twig\RuntimeLoader\RuntimeLoaderInterface;

$twig->addRuntimeLoader(new class implements RuntimeLoaderInterface {
    public function load($class) {
        if (MarkdownRuntime::class === $class) {
            return new MarkdownRuntime(new DefaultMarkdown());
        }
    }
});

html_to_markdown 只是一个前端;实际转换由以下兼容库之一完成,您可以从中进行选择:

根据库的不同,还可以通过将某些选项作为参数传递给筛选器来添加这些选项。例如 league/html-to-markdown

1
2
3
4
5
{% apply html_to_markdown({hard_break: false}) %}
    <html>
        <h1>Hello!</h1>
    </html>
{% endapply %}