【问题标题】:JQuery/Coffeescript unescape variable stringJQuery/Coffeescript unescape 变量字符串
【发布时间】:2014-02-27 22:44:08
【问题描述】:

所以我在 coffeescript 文件中有这个 jquery 块;

$("#parser-results").append(
 "<tr><td>" + d.id + "</td>" +
 "<td>" + d.received_at + "</td>" +
 "<td>" + d.from_address + "</td>" +
 "<td>" + d.to_address + "</td>" +
 "<td>" + d.subject_text + "</td></tr>" +
 "<tr><td colspan=5><div class='body-text'>" + d.body_text.replace(/\n/g, "<br />") + "</div></td></tr>"
)

这里的问题与变量d.body_text 相关,它是从数据库中检索到的TEXT 字段。

我正在尝试用&lt;br&gt; 替换\n 的所有实例,并且我确实尝试了我在互联网上可以找到的每种方法的每种jquery、javascript 和coffeescript 变体。我也试过preg_replacenl2br在数据输入数据库之前没有用。

此外,数据来自名为 mailparser.io 的邮件解析服务。我怀疑这与此有关,但我真的不确定了。

这里缺少什么?我需要一些帮助来确定问题所在。

【问题讨论】:

  • 你提到数据入库之前,你试过preg_replace和nl2br添加
    。你是说原始数据也没有用
    保存?有没有办法检查原始数据,例如使用 phpMyAdmin 来确认... 这是一个快速调试提示:尝试另一个类似的过程,看看它是否也失败了。比如尝试替换所有空格(\s),看看替换方法是否至少有效。它可能会给你一些关于检查什么的想法。
  • 另一个提示:您无需添加 &lt;br&gt; 即可获得换行符。只需在您的 css 中使用 white-space:pre-wrap;,并保留文本。或者,如果您想将多个空格合并为一个,请使用pre-line。见developer.mozilla.org/en-US/docs/Web/CSS/white-space
  • 你能举一个例子来说明d.body_text到底是什么样子吗?你确定你有换行符而不是\ns 作为两个字符吗?
  • @muistooshort 你是对的。它们是数据库中的\n 字符。例如hey guys\nhow are you?\n
  • 那么d.body_text.replace(/\\n/g, '&lt;br&gt;') 会给你想要的结果吗?

标签: javascript jquery coffeescript escaping


【解决方案1】:

根据 cmets,似乎有人已将真正的换行符(即 (Coffee|Java)Script 中的 "\n")转换为数据库中的两个字符串 '\\' + 'n'。这可以解释原因:

d.body_text.replace(/\n/g, "<br />")

没有任何用处:没有可以用&lt;br&gt;s 替换的换行符,所以,没有任何东西被替换。解决方案是替换真正存在的东西:

d.body_text.replace(/\\n/g, "<br />")
// ------------------^^^ This gives you a literal \n (as two characters)

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多