11

例如:

用户提交带有 a 的表单并在其中<textarea name="mytext" cols="35" rows="2"></textarea>按下ENTER。如何用 CR-LF 替换 CR-LF <br />

4

5 回答 5

17

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

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

从帮助文档 -

替换字符串中的字符:

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

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

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

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

于 2012-07-04T14:33:52.193 回答
14

<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>
于 2012-07-04T14:47:11.613 回答
2

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

于 2012-07-04T14:34:01.407 回答
2

您可以使用 paragraphFormat() 函数,但有时替换函数可以帮助您可视化实际发生的情况。

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

这将所有回车换行符替换为 html 换行符

于 2012-07-05T23:23:55.017 回答
0

我实际上更喜欢这样的东西:

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

因为它将多个换行符组合成一个分段符。

于 2014-04-02T20:01:16.090 回答