💭

textareaでの改行コードと送信後の改行コード

2022/08/06に公開

良く忘れてしまうのでメモとして残しておく。

結論

textarea 上での改行コードは LF で、送信後 CRLF になる。

検証用コード

index.html
<body>
    <form action="/post.php" method="post" id="textarea">
        <textarea name="value"></textarea>
        <input type="submit" value="post">
    </form>

    <p>改行コード <span id="new-line-char"></span></p>

    <script>
        document.getElementById('textarea').addEventListener('change', event => {
            document.getElementById('new-line-char').innerText = getNewLineChar(event.target.value);
        });

        function getNewLineChar(str) {
            if (str.match(/\r\n/)) {
                return 'CRLF';
            } else if (str.match(/\r/)) {
                return 'CR';
            } else if (str.match(/\n/)) {
                return 'LF';
            } else {
                return '';
            }
        }
    </script>
</body>
post.php
<?php

function getNewLineChar(?string $str): string
{
    return match (true) {
        (bool)preg_match('/\r\n/', $str) => 'CRLF',
        (bool)preg_match('/\r/', $str) => 'CR',
        (bool)preg_match('/\n/', $str) => 'LF',
        default => '',
    };
}

echo '改行コード: ' , getNewLineChar($_POST['value']);

参考

HTML Standard

GitHubで編集を提案

Discussion