HTML 与 Markdown 互相转换
引入以下工具进行 markdown 与 html 之间的转换.
App\Http\Controllers\Traits\Markdown.php;
<?php
/**
* Created by PhpStorm.
* User: GucciLee
* Date: 2019/3/4
* Time: 14:41
*/
namespace App\Http\Controllers\Traits;
use League\HTMLToMarkdown\HtmlConverter;
trait Markdown
{
/**
* markdown -> html
* @param $markdown
* @return mixed
*/
public function markdownToHtml($markdown)
{
// markdown to html
$convertedHmtl = app('Parsedown')->setBreaksEnabled(true)->text($markdown);
/** XSS 防注入 */
$convertedHmtl = clean($convertedHmtl, 'markdown');
// 代码高亮展示优化
$convertedHmtl = str_replace("<pre><code>", '<pre><code class=" language-php">', $convertedHmtl);
// 移除 {{}}
// $convertedHmtl = remove_vue($convertedHmtl);
// 返回 html
return $convertedHmtl;
}
/**
* html -> markdown;
* @param $html
* @return string
*/
public function htmlToMarkdown($html)
{
$converter = new HtmlConverter(['header_style' => 'atx']);
$converter->getConfig()->setOption('list_item_style', '*');
return $converter->convert($html);
}
}
其中有用到 XSS 防注入, 参考文章:
XSS 安全漏洞 - HTMLPurifier
App\Http\Controllers\ArticlesController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Traits\Markdown;
.
.
.
class ArticlesController extends Controller{
use Markdown;
.
.
.
public function show(Article $article)
{
// 转换markdown
$article->body = $this->markdownToHtml($article->body);
return view('pages.articles.show', compact('article'));
}
.
.
.
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
请问 trait 的 markdownToHtml 方法中的 clean 方法是哪儿来的 ?