Php 如何为parsedown提供的表元素添加class属性?
我有一些降价文件,我想把它们显示在我的博客上,这是由Laravel开发的 因此,我想出了这样一个解决方案: 控制器 刀片 进入:Php 如何为parsedown提供的表元素添加class属性?,php,laravel,parsedown,Php,Laravel,Parsedown,我有一些降价文件,我想把它们显示在我的博客上,这是由Laravel开发的 因此,我想出了这样一个解决方案: 控制器 刀片 进入: 标题1 标题2 单元格1.1 单元格1.2 单元格2.1 单元格2.2 然后我得到了一张没有引导风格的桌子,看起来很奇怪。我想得到的是: <table class="table"> ... </table> ... 那么,有谁能给我一些建议吗?不支持将类添加到生成的元素中Parsedown也不支持将生成的HTML作为XML文档发出
标题1
标题2
单元格1.1
单元格1.2
单元格2.1
单元格2.2
然后我得到了一张没有引导风格的桌子,看起来很奇怪。我想得到的是:
<table class="table">
...
</table>
...
那么,有谁能给我一些建议吗?不支持将类添加到生成的元素中Parsedown
也不支持将生成的HTML作为XML文档发出。因此,您有两种选择:
用于替换为正则表达式
使用(或类似)解析HTML树并替换元素
由于HTMLParsedown
生成的代码简单、格式良好且可预测,因此您可能不需要使用preg\u replace
。实现将如下所示:
public function display() {
$pd = new Parsedown();
$text = Storage::disk('local')->get('x.md');
$html = $pd->text($text);
$html = preg_replace('/^\s*<table>\s*$/', '<table class="table">', $html);
$title = "title";
return view('x.y', [
"html" => $html,
"title" => $title
]);
}
公共功能显示(){
$pd=新的Parsedown();
$text=Storage::disk('local')->get('x.md');
$html=$pd->text($text);
$html=preg_replace('/^\s*\s*$/',''$html);
$title=“title”;
返回视图('x.y'[
“html”=>$html,
“title”=>$title
]);
}
阅读Parsedown的源代码后,我找到了一个解决方案
在blockTable()
方法中:
更改此项:
$Block = array(
'alignments' => $alignments,
'identified' => true,
'element' => array(
'name' => 'table',
'handler' => 'elements'
),
);
致:
它将输出带有class=“table”
的table
元素
最后,我创建了一个新类,它扩展了Parsedown
,并用我自己的实现重写了blockTable
方法 这可能与你的问题有关。你试过了吗?它是有效的,但我找到了一个更简洁的方法来实现这一点。看看我的答案。啊,开源的好处是:改变它以满足你的需要+从我这里得到1。
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td>cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>
<table class="table">
...
</table>
public function display() {
$pd = new Parsedown();
$text = Storage::disk('local')->get('x.md');
$html = $pd->text($text);
$html = preg_replace('/^\s*<table>\s*$/', '<table class="table">', $html);
$title = "title";
return view('x.y', [
"html" => $html,
"title" => $title
]);
}
$Block = array(
'alignments' => $alignments,
'identified' => true,
'element' => array(
'name' => 'table',
'handler' => 'elements'
),
);
$Block = array(
'alignments' => $alignments,
'identified' => true,
'element' => array(
'name' => 'table',
'handler' => 'elements',
'attributes' => [ //+
"class" => "table" //+
] //+
),
);