【问题标题】:sql query to convert new line character to a html <br>sql查询将换行符转换为html <br>
【发布时间】:2011-11-02 20:52:24
【问题描述】:

我有一个 mysql 数据库的文章,这些文章被输入到没有格式的文本区域中,它们只使用换行符来换行

\n

我需要将所有这些转换成html br标签

<br />

你能帮我写一个查询来做这件事,我可以在 phpmyadmin 中运行它来做这件事吗?

表的名称是

exp_channel_data

作为一个额外的问题......

是否有一个我可以运行的查询将所有内容从 p 和 span 标签的中间剥离

我想摆脱这些东西

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt">
<span face="Times New Roman">

最后就是这个

<p>
<span>

【问题讨论】:

  • 如果您还不知道,请阅读 SQL 注入:en.wikipedia.org/wiki/SQL_injection。你真的,真的,不想在你的数据库中有 SQL。另外,一般来说,我强烈建议在数据库之外进行这种格式化工作。
  • 是的,我实际上并没有在数据库中包含任何 SQL(我认为),这只是我需要运行的一次转换,感谢提示

标签: mysql html expressionengine


【解决方案1】:

第一个问题:

UPDATE exp_channel_data SET text_column = REPLACE(text_column, '\r\n', '<br />')

如果它没有替换任何内容,请使用 '\n' 而不是 '\r\n'。

第二个问题:

你不能用 SQL 查询来做到这一点,你必须把这些数据提取到 PHP 脚本中,或者你喜欢的任何其他东西中,并执行正则表达式替换(PHP 示例):

$new_str = preg_replace('#<(p|span)[^>]+>#', '<$1>', $old_string);

【讨论】:

  • 对于第二个问题,使用 mariadb 代替 mysql 并练习 REGEXP_REPLACE()
  • 我在 php trim(preg_replace('/\r\n/', ' ', $text));
【解决方案2】:
UPDATE yourTable SET text=REPLACE(text,"\n","<br />")

这适用于您的第一个问题。

【讨论】:

  • 这不是有效的 SQL 语法
  • @Crack,是的,对此感到抱歉。德国现在太热太湿了。
  • 嘿,分享你的太阳。波兰 19°C 多雨 ;)
【解决方案3】:

由于您使用的是 ExpressionEngine,您只需将每个字段的格式更改为 XHTML。它将在前端显示时添加&lt;br /&gt; 标记。打赌保持数据干净,并将格式留给显示它的解析器。

【讨论】:

  • 我实际上是从具有自动 br 格式的 textarea 字段类型切换到 NSM TinyMCE 并希望保留中断,如果我不这样做,文本会一起运行,如果我没有切换字段类型您的解决方案将是一个很好的解决方案
【解决方案4】:

如果有人碰巧在寻找 PHP 端解决方案,请使用 nl2br 函数...它对我有用。它在运行时将那些讨厌的换行符转换为 HTML &lt;br&gt; 标签。

https://www.w3schools.com/PHP/func_string_nl2br.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多