例えば:
ユーザーが を含むフォームを送信し、その中で<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 には、paragraph2 と呼ばれる拡張バージョン (UDF) もあります。これを簡単に変更して、必要な効果を正確に得ることができます。リンクは次のとおりです。
<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>
paragraphFormat() 関数を使用できますが、replace 関数を使用すると、実際に何が起こっているかを視覚化するのに役立つ場合があります。
例:<cfset TheText=replace("#form.myText#",chr(13)&chr(10),"<br />","all")>
これにより、すべてのキャリッジ リターン ライン フィードが HTML 改行に置き換えられます。
br に置き換える代わりに、値を表示するときにParagraphFormat関数を使用します。
私は実際には次のようなものを好みます:
<p>#REReplace(theParagraphText, "[#chr(10)#]+", "</p><p>", "ALL")#</p>
複数の改行を 1 つの段落区切りに結合するためです。