【问题标题】:MarkDown ( Dont format my TEXT from Database )MarkDown(不要从数据库格式化我的文本)
【发布时间】:2015-10-07 13:16:51
【问题描述】:

我是这个领域的新手。 我需要将 MarkDown 放入我的网站。

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

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

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

数据库是 SQL,类型是 VARCHAR。

HTML 未格式化。

信息:

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

【问题讨论】:

  • 您能否提供更多关于此的信息:“要打印,我使用.row。”?也许显示输出(打印?)帖子内容的代码。
  • @Waylan 有什么意义?但是好的,好的。
  • @Master-Antonio 您实际上需要发布完整的打印代码 - 因为您编写的内容不会运行。在$i++ 之后你应该有一个echo 声明。
  • @icc97 ,是的,我忘了。然而这是完整的代码,只有第一个的重复,但类发生了变化。但这不是问题,问题是另一个问题。 “当我将文本发送到数据库,并在我的页面中获取并打印后,html 未格式化”,例如,在 markdown 中有 ### Hello ,在预览中我在

    中看到 Hello 但打印在我的卡###你好。

  • 您是直接从数据库中打印出来的——所以这意味着您将 Markdown 保存到数据库而不是 HTML。因此,您需要在从数据库中出来的 Markdown 上运行与预览相同的代码

标签: php mysql database server markdown


【解决方案1】:

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

如果您希望稍后再回来编辑文本,那么您总是希望将文档存储为 Markdown 文本。这意味着每次请求/显示页面时,还需要将文本从 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 文本作为两个单独的列存储在数据库表中.这样,当您想要“编辑”文档时,检索 Markdown 文档并进行更改。保存这些更改后,将 Markdown 和呈现的 HTML 保存到各自的数据库列中。但是,当您想要显示文档时(这可能在大多数情况下发生),从数据库的呈现列(HTML)中检索文档。例如:

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

【讨论】:

  • 您使用的环境:服务器、语言、框架(如果有),可能还有您用于获取/保存数据到数据库的代码。任何这些中最轻微的变化都可能完全改变答案的细节。没有人会在不知道所有这些东西的情况下给你答案,因为除非他们碰巧猜对了,否则答案将完全没有用,这不太可能。
  • 发帖。看。谢谢大家。
  • 我已经添加了一些代码示例和解释,因为我有更多信息。
  • 这只是服务器端,对吧?可以使用我的 Markdown 吗?或者客户端也有必要使用它?
  • 类 'Markdown' 未找到。工作 Markdown() 没有 Markdown::defaultTransform()。
【解决方案2】:

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>";
    }
}

【讨论】:

  • 客户端可以使用My Markdown吗?还是这个也有必要使用?
  • 这是在服务器端运行的,它生成 javascript 然后在客户端运行。这将在客户端生成 HTML。如果您还想在客户端显示降价,那么只需echo $row['contenuto']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2015-09-30
  • 2017-10-28
相关资源
最近更新 更多