MarkDown(不要从数据库格式化我的文本)

MarkDown ( Dont format my TEXT from Database )

我是这个领域的新手。 我需要在我的站点中加入 MarkDown。

我正在使用这个:https://github.com/NextStepWebs/simplemde-markdown-editor

MarkDown 出现并在客户端工作,使用 PREVIEW 我看到 HTML 格式。

问题是当我向数据库发送文本,并在获取文本并将其打印到我的页面后。

数据库位于 SQL,类型为 VARCHAR。

HTML未格式化。

信息:

我认为在服务器端需要一些东西,但我在 github 上找不到任何东西。

看来您在客户端上有一个工作预览,它接受 Markdown 文本并成功将其转换为 HTML 并在预览中显示。但是,现在您想将文本存储在数据库中。

如果您希望稍后再回来编辑文本,那么您将始终希望将文档存储为 Markdown 文本。这意味着每次页面 requested/displayed 时,文本也需要从 Markdown 转换为 HTML。但是,当从数据库中检索文档并提供给客户端之前,您需要 运行 通过 Markdown 解析器将文档转换为 HTML。我的 PHP 有点生疏,但是像下面这样的改变会让你朝着正确的方向开始:

if(mysql_num_rows($sql) > 0){
        $i=0;

        while($row = mysql_fetch_assoc($sql)) {
            $i++;
            echo ' <div class="comment">'.Markdown::defaultTransform($row ['contenuto']).'</div> ext ext ext '
        }

请注意,从数据库中获取的内容在打印之前会通过 Markdown parser 传递。您需要正确安装 PHP Markdown 库才能正常工作。当然每次请求页面都会解析Markdown

另一种解决方案可能是使用 JavaScript Markdown 解析器(可能与预览工具使用的解析器相同),它会在每次页面打开时在客户端将 Markdown 转换为 HTML要求。但是,这将假设每个请求仅请求部分文档(可能带有 AJAX 请求)而不是加载整个新页面(否则 JavaScript 库将如何处理文档) .这可能有效也可能无效,同样取决于您当前的设置,并且通常不是首选选项。另一个答案提供了这种潜在的解决方案。

第三个(也许更有吸引力)选项可以消除在每次请求时将 Markdown 转换为 HTML 的需要,它将存储原始 Markdown 文本和转换后的 HTML 文本作为数据库中的两个单独的列 table。这样,当您想要 "edit" 文档时,检索 Markdown 文档并进行更改。保存这些更改后,将 Markdown 和呈现的 HTML 保存到它们各自的数据库列中。但是,当您想要显示文档时(这可能在大多数情况下发生)从数据库的呈现列(HTML)中检索文档。例如:

$HTMLpost = Markdown::defaultTransform($post);

simplemde-markdown-editor 使用 Marked 将 Markdown 转换为 HTML 以供预览。

所以你只需要按照标记的自述文件中的代码进行操作:https://github.com/chjj/marked#browser

<?php
if (mysql_num_rows($sql) > 0) {
    $i = 0;

    while ($row = mysql_fetch_assoc($sql)) {
        $i++;
        $comment = $row['contenuto'];
        echo "<div id='comment$i' class='comment'></div>
        <script>
        document.getElementById('comment$i').innerHTML = marked('$comment');
        </script>";
    }
}