将换行符转换为HTML的<b>&lt;br&gt;</b>标签的SQL查询

11

我有一个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注入,请阅读一下这个链接:http://en.wikipedia.org/wiki/SQL_injection。你真的,真的不想在你的数据库中出现SQL注入。 此外,总的来说,我强烈建议在数据库之外进行这种格式化工作。 - Neville Kuyt
嗯,实际上我在数据库中没有包含任何SQL(我想),这只是我需要运行的一次性转换,感谢提示。 - user26858
4个回答

32

第一个问题:

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()函数进行练习。 - lrkwz
我在 PHP 中使用了这种方式 trim(preg_replace('/\r\n/', ' ', $text));。 - Vivek Jain

8
UPDATE yourTable SET text=REPLACE(text,"\n","<br />")

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


这不是一个有效的SQL语法。 - piotrp
@Crack,是的,对此我感到抱歉。现在德国天气太热和潮湿了。 - Jacob
嘿,分享你的阳光吧。波兰现在19°C,有雨天 ;) - piotrp

1

由于您正在使用ExpressionEngine,您可以将每个字段的格式更改为XHTML。在前端显示时,它会添加<br />标记。最好保持数据干净,并将格式化留给解析器来显示。


我正在从带有自动换行格式的文本区域字段类型切换到NSM TinyMCE,并希望保留换行符,如果我不这样做,文本将全部连在一起。如果我没有切换字段类型,您的解决方案将是一个好选择。 - user26858

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接