我在SQL Server中有一个varchar()字段,它在段落标记之间有一些回车符/换行符。
我想把它变成格式正确的HTML。
例如:
----------在----------
之前快速的棕色狐狸跳过懒狗。然后他感到无聊并上床睡觉。之后,他和他的朋友一起玩。
第二天,他和他的朋友举行了一个盛大的聚会。
----------在-----------
之后< p>快速的棕色狐狸跳过懒狗。然后他感到无聊并上床睡觉。之后,他和他的朋友一起玩。< / p>
< p>第二天,他和他的朋友举行了一个盛大的派对。< / p>
这样做的正确方法是什么?显然正则表达式是一个很好的方法,但我无法弄清楚如何以理智的方式捕获字段的开头以及crlf(回车/换行)组合。
那里有任何正则表达式天才吗?会爱一些帮助。谢谢,如果是的话!
答案 0 :(得分:6)
这样的事情不需要正则表达式。普通的字符串操作可以做到。 (C#中的示例):
text = "<p>" + text.Replace("\r\n", "</p><p>") + "</p>";
(取决于换行符是否与系统有关,您应使用特定字符串,如"\r\n"
或属性Environment.NewLine
。)
如果字符串最初来自用户输入,因此您无法完全控制它,则必须在放入段落标记之前对其进行正确的html编码,以防止跨站点脚本攻击。
答案 1 :(得分:4)
不要忘记添加&lt; p&gt;标签是不够的,你必须转义HTML中具有特殊含义的字符(&lt;变成&lt; lt;等等),否则你最终可能会破坏页面甚至脚本注入。
答案 2 :(得分:0)
如果文本已经分为带换行符的段落,则可以像
一样简单text = Regex.Replace(text, ".+", "<p>$0</p>");
这假设没有HTML特殊字符(如Thilo所提到的)或段落之间的额外空白字符,如下所示:"text\n \nmore text"
。在添加标记之前,您可能希望处理类似的事情。
答案 3 :(得分:0)
如果字符串最初来自用户输入,因此您无法完全控制它,则必须在将段落标记放入
之前对其进行正确的html编码yourString="p" + text.Replace("\r\n","<p></p>") + "</p>";