Php 如何为parsedown提供的表元素添加class属性?

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文档发出

我有一些降价文件,我想把它们显示在我的博客上,这是由Laravel开发的

因此,我想出了这样一个解决方案:

控制器 刀片 进入:


标题1
标题2
单元格1.1
单元格1.2
单元格2.1
单元格2.2
然后我得到了一张没有引导风格的桌子,看起来很奇怪。我想得到的是:

<table class="table">
  ...
</table>

...
那么,有谁能给我一些建议吗?

不支持将
类添加到生成的元素中
Parsedown
也不支持将生成的HTML作为XML文档发出。因此,您有两种选择:

  • 用于替换为正则表达式
  • 使用(或类似)解析HTML树并替换元素
  • 由于HTML
    Parsedown
    生成的代码简单、格式良好且可预测,因此您可能不需要使用
    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"  //+
                    ]                       //+
                ),
            );