【问题标题】:Display line break from mysql text type to ejs显示从 mysql 文本类型到 ejs 的换行符
【发布时间】:2017-02-21 19:43:58
【问题描述】:

我有一个列 PROJ_ABOUT 的 MySQL 表,它的类型是 TEXT

我在此列中插入了多行,现在我尝试使用 ejs 引擎在我的 Express.js 应用程序中显示此条目。

    <h2>About project</h2>
    <p><%= rows.PROJ_ABOUT %></p>

但是,当文本插入到 ejs 文件中时,所有的换行符都会丢失。

    **Instead of this:**
    Line 1
    Line 2
    **I get this:**
    Line1Line2

我尝试通过使用 &lt;br /&gt; 而不是 '\n' 将条目保存到数据库来解决此问题,但我没有获得换行符,而是将带有 br 标记的文本写成普通文本。

    **So i got this:**
    Line1<br />Line2

现在,我看到了 PHP 的答案,但我正在使用带有 ejs 模板引擎的 Node.js,我正在寻找使用 JS 的解决方案。

【问题讨论】:

    标签: javascript mysql node.js express ejs


    【解决方案1】:

    试试这个 EJS 标签&lt;%- %&gt; 而不是&lt;%= %&gt;。第一个 EJS 标签不会转义 HTML。

    所以只需将您的文本用&lt;br&gt; 换成&lt;%- rows.PROJ_ABOUT %&gt;

    要将文本中的\n 等行尾更改为&lt;br&gt;,您可以使用nl2br 包(在服务器端)。

    【讨论】:

    • 我使用了其他解决方案,因为我只是将 \n 更改为 br 标记并且它有效,但是如果我要使用 nl2br,我将它包含在哪里?
    • 我的意思是,我将它安装在我的项目中,在路由页面上进行 require 声明,然后它已经可以在 ejs 模板中使用了吗?
    • 糟糕!不,您需要在服务器端致电nl2br()。这是我的错
    【解决方案2】:

    您需要使用正确的 EJS 语法来呈现未转义的 HTML,否则您将得到转义的字符串。

    简短的回答是:

    <!--    V You should use - instead of = -->
    <p>   <%- rows.PROJ_ABOUT %></p> 
    

    这会将您的 rows.PROJ_ABOUT 变量呈现为未转义的 HTML

    【讨论】:

      【解决方案3】:

      使用这个

      <p><%- rows.PROJ_ABOUT %></p>
      

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 2019-01-12
        • 1970-01-01
        • 2016-07-15
        相关资源
        最近更新 更多