如何用<br/>替换CR + LF?

时间:2012-07-04 14:26:27

标签: coldfusion textarea newline

例如:

用户提交带有<textarea name="mytext" cols="35" rows="2"></textarea>的表单,并在其中按 ENTER 。如何用<br />

替换CR-LF

5 个答案:

答案 0 :(得分:16)

CF有一个名为ParagraphFormat()的函数:

<cfset form.userText = paragraphFormat(form.usertext)/>

来自帮助文档 -

替换字符串中的字符:

  • 带空格的单个换行符(CR / LF序列)
  • 带有HTML段落标记的双重换行符(<p>

它可能比您想要的更多,因为它还会查找双重换行符并添加<p></p>标记。

Ben还有一个名为paragraph2的增强版本(UDF),它很容易修改以获得您想要的确切效果。这是链接:

http://www.cflib.org/udf/ParagraphFormat2

答案 1 :(得分:12)

<cfset localVars.ReturnString = REReplace(localVars.ReturnString, "\r\n|\n\r|\n|\r", "<br />", "all")>

你不应该自然地点击\n\r,但是如果被忘记了正确顺序的开发者插入它就会发生。

这是一个更通用的函数的子集,用你基于你正在做的事情替换行尾(EOL)字符(例如必须用Windows / Linux格式写出,.ics文件,html,cfheaders,等)

<cffunction name="ReplaceEOL" access="public" output="false" returntype="string" hint="Replaces EOL codes with other characters">
    <cfargument name="String" required="true" type="string">
    <cfargument name="ReplaceWith" required="true" type="string">

    <cfreturn REReplace(Arguments.String, "\r\n|\n\r|\n|\r", Arguments.ReplaceWith, "all")>
</cffunction>

答案 2 :(得分:2)

我没有用br替换它,而是在显示值时使用ParagraphFormat函数。

答案 3 :(得分:2)

您可以使用paragraphFormat()函数,但有时候替换函数可以帮助您直观地了解实际发生的情况。

示例:<cfset TheText=replace("#form.myText#",chr(13)&chr(10),"<br />","all")>

这将使用html换行符替换所有回车换行符

答案 4 :(得分:0)

我其实更喜欢这样的事情:

<p>#REReplace(theParagraphText, "[#chr(10)#]+", "</p><p>", "ALL")#</p>

因为它将多个换行符组合成一个段落中断。