【问题标题】:How to replace CR+LF with <br />?如何用<br />替换CR+LF?
【发布时间】:2012-07-05 01:41:12
【问题描述】:

例如:

用户提交带有&lt;textarea name="mytext" cols="35" rows="2"&gt;&lt;/textarea&gt; 的表单并在其中按ENTER。如何将 CR-LF 替换为 &lt;br /&gt;

【问题讨论】:

    标签: coldfusion textarea newline


    【解决方案1】:

    CF为此提供了一个名为ParagraphFormat()的函数:

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

    来自帮助文档 -

    替换字符串中的字符:

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

    它可能比你想要的更多,因为它还会查找双换行符并添加&lt;p&gt;&lt;/p&gt; 标签。

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

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

    【讨论】:

    • 我认为 ParagraphFormat2 在这种情况下可能会更好,因为它确实将单换行符变成“
      ”(以及双换行符变成 HTML 段落)。
    【解决方案2】:

    &lt;cfset localVars.ReturnString = REReplace(localVars.ReturnString, "\r\n|\n\r|\n|\r", "&lt;br /&gt;", "all")&gt;

    你不应该自然而然地点击\n\r,但如果它是由忘记正确顺序的开发人员插入的,就会发生这种情况。

    这是一个更通用的函数的子集,用于根据您正在执行的操作(例如,必须以 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>
    

    【讨论】:

    • 我刚刚修复了您的第一个示例并简化了代码,但意识到这实际上不会按预期工作 - 单独的 \r\n 在组合版本之前得到匹配(最早匹配获胜大多数现代正则表达式),因此需要将它们移动到交替的末尾 - .e。 \r\n|\n\r|\n|\r - 我也继续修复了这个问题,但只是想指出它,因为记住它很有用。
    • 虽然我个人总是只删除所有回车,然后只需要处理换行符,例如String.replaceAll('\r','').replaceAll('\n','&lt;br/&gt;')
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        我其实更喜欢这样的:

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-03
        • 2016-03-28
        • 2016-05-09
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 2019-03-14
        相关资源
        最近更新 更多