例如:
用户提交带有<textarea name="mytext" cols="35" rows="2"></textarea>
的表单,并在其中按 ENTER 。如何用<br />
?
答案 0 :(得分:16)
CF有一个名为ParagraphFormat()的函数:
<cfset form.userText = paragraphFormat(form.usertext)/>
来自帮助文档 -
替换字符串中的字符:
<p>
)它可能比您想要的更多,因为它还会查找双重换行符并添加<p>
和</p>
标记。
Ben还有一个名为paragraph2的增强版本(UDF),它很容易修改以获得您想要的确切效果。这是链接:
答案 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>
因为它将多个换行符组合成一个段落中断。