11

例えば:

ユーザーが を含むフォームを送信し、その中で<textarea name="mytext" cols="35" rows="2"></textarea>を押しENTERます。CR-LF を に置き換えるにはどうすればよい<br />ですか?

4

5 に答える 5

17

CF には ParagraphFormat() と呼ばれる関数があります。

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

ヘルプドキュメントから -

文字列内の文字を置き換えます:

  • スペースを含む単一の改行文字 (CR/LF シーケンス)
  • HTML 段落タグ付きの二重改行文字 ( <p>)

二重改行、追加、タグも検索するという点で、必要以上のことを行う場合があります。<p></p>

Ben には、paragraph2 と呼ばれる拡張バージョン (UDF) もあります。これを簡単に変更して、必要な効果を正確に得ることができます。リンクは次のとおりです。

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

paragraphFormat() 関数を使用できますが、replace 関数を使用すると、実際に何が起こっているかを視覚化するのに役立つ場合があります。

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

これにより、すべてのキャリッジ リターン ライン フィードが HTML 改行に置き換えられます。

于 2012-07-05T23:23:55.017 に答える
2

br に置き換える代わりに、値を表示するときにParagraphFormat関数を使用します。

于 2012-07-04T14:34:01.407 に答える
0

私は実際には次のようなものを好みます:

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

複数の改行を 1 つの段落区切りに結合するためです。

于 2014-04-02T20:01:16.090 に答える