例如:
用户提交一个表单,其中包含一个带有
用户提交一个表单,其中包含一个带有
<textarea name="mytext" cols="35" rows="2"></textarea>
标记的区域,并在其中按下 ENTER. 我该如何将 CR-LF 替换为 <br />
?<textarea name="mytext" cols="35" rows="2"></textarea>
标记的区域,并在其中按下 ENTER. 我该如何将 CR-LF 替换为 <br />
?CF有一个名为ParagraphFormat()的函数可以实现此功能:
<cfset form.userText = paragraphFormat(form.usertext)/>
根据帮助文档 -
替换字符串中的字符:
<p>
)它可能比您想要的做得更多,因为它还会查找双重换行符并添加<p>
和</p>
标记。
Ben 还有一个增强版本(UDF)称为 paragraph2,很容易修改以获得您想要的确切效果。这是链接:
<cfset localVars.ReturnString = REReplace(localVars.ReturnString, "\r\n|\n\r|\n|\r", "<br />", "all")>
该代码是用来将字符串中的换行符替换成<br />标签,以便在 HTML 中正常显示。这个操作是针对不同需求(例如在 Windows/Linux 格式下编写、.ics 文件或 cfheaders 等)而实现的一般性函数的一个子集。
虽然你通常不会遇到 \n\r
这样的字符组合,但如果被忘记了正确的顺序而插入了这样的字符,就有可能出现。
<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>
\r
和\n
会在组合版本之前匹配,所以需要将它们移动到备选项的末尾 - 即\r\n|\n\r|\n|\r
- 我已经修复了这个问题,但只是想指出这一点,因为记住这一点很有用。 - Peter BoughtonString.replaceAll('\r','').replaceAll('\n','<br/>')
。 - Peter Boughton<cfset TheText=replace("#form.myText#",chr(13)&chr(10),"<br />","all")>
这将用HTML换行符替换所有回车换行符。我更喜欢这样的写法:
<p>#REReplace(theParagraphText, "[#chr(10)#]+", "</p><p>", "ALL")#</p>
它将多个换行符合并为单个段落分隔符。