<textarea> の値の改行コード

<textarea> の値の改行コードは、状況によって異なります。

目次

JavaScript 上での改行コード

JavaScript 上の value (HTMLTextAreaElement の value プロパティ) で取得できる値の改行コードは LF (U+000A ラインフィード。\n) です。
別の改行コードがあっても LF に正規化されます。


ここに結果が表示されます。

フォーム送信された値の改行コード

フォーム送信された値の改行コードは CRLF (U+000D キャリッジリターン / U+000A ラインフィード。\r\n) です。
別の改行コードがあっても CRLF に正規化されます。

例 (PHP)

ソースコード
<?php
$ta1 = '';
if (isset($_POST['ta1'])) {
    // 改行コードを \r, \n に変換
    $map = [ "\r" => "\\r", "\n" => "\\n" ];
    $ta1 = preg_replace_callback('#[\r\n]#', function($m) use($map) { return $map[$m[0]]; }, $_POST['ta1']);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>テスト</title>
</head>
<body>
    <form method="post">
        <textarea name="ta1">1行目
2行目</textarea><br>
        <button type="submit">改行コード表示</button>
    </form>
    <pre><?php echo $ta1 ?></pre>
</body>
</html>
結果 (画像のため操作はできません)

参考

For historical reasons, the element's value is normalized in three different ways for three different purposes. The raw value is the value as it was originally set. It is not normalized. The API value is the value used in the value IDL attribute, textLength IDL attribute, and by the maxlength and minlength content attributes. It is normalized so that line breaks use U+000A LINE FEED (LF) characters. Finally, there is the value, as used in form submission and other processing models in this specification. It is normalized so that line breaks use U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pairs, and in addition, if necessary given the element's wrap attribute, additional line breaks are inserted to wrap the text at the given width.

(歴史的な理由から、要素の値は3つの異なる目的のために3つの異なる方法で正規化されます。「生の値」(raw value) は、元々設定されていた通りの値です。正規化されていません。「API値」(API value) は、value IDL 属性、textLength IDL 属性、maxlength、minlength コンテンツ属性で使用される値です。改行には U+000A LINE FEED (LF) 文字を使用するように正規化されています。最後に、この仕様書のフォーム送信及び他の処理モデルで使用される値があります。これは、改行が U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) 文字ペアを使用するように正規化され、さらに、要素の wrap 属性が与えられている必要がある場合には,与えられた幅でテキストを折り返すために追加の改行が挿入されます)

4.10.11 The textarea element | HTML Standard (※ WHATWG 版 HTML5 仕様書の注釈)