###前提・実現したいこと
テキストエリアから取得した値の改行が
のようになってしまいます。
データベースにも
が入っています。
どのように改行コードを変換?してあげれば良いでしょうか?
###該当のソースコード
javascript
1//#contactHistoryはテキストエリアのidです。 2var contactHistory = $("#contactHistory").val().replace(new RegExp('\r\n', 'g'), '\n').replace(new RegExp('\n', 'g'), `\r\n`); 3console.log(contactHistory);
###補足情報(言語/FW/ツール等のバージョンなど)
・テキストエリアの入力内容
改行テスト
改行テスト
・データベースに入る内容
改行テスト
改行テスト
###追記
html
1<textarea id="contactHistory" class="form-control" rows="5"></textarea>
javascript
1$(document).on('click', '#saveFormap', function(){ 2 var id = $(this)[0].dataset.id; 3 var contactHistory = $("#contactHistory").val(); 4 5 console.log(contactHistory); 6 $.ajax({ 7 type: 'POST', 8 url: 'http://localhost/test/', 9 data: { 10 'id': id, 11 'val': contactHistory, 12 }, 13 dataType: 'json', 14 }).done(function (response) { 15 if(window.confirm('本当に更新してよろしいですか?')){ 16 $('.close').click(); 17 } 18 }).fail(function () { 19 alert("通信に失敗しました。"); 20 }); 21});
###追記
PHP
1//$valには改行テスト 改行テストが入っています。 2$id = (int) filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT); 3$val = (string) filter_input(INPUT_POST, 'val', FILTER_SANITIZE_SPECIAL_CHARS); 4 5$val = preg_replace("/\r\n|\r|\n/", "\n", $val);
replace()を重ねられてますが、何か表示のためですか?
こちらのサイトから情報をいただきました。http://info-i.net/convert-lf-to-crlf
DBに入れるのであればreplace()せずにval()をそのまま突っ込んでそのまま表示すれば良いですよ。
DBに入っているテキストが「改行テスト 改行テスト」のため、表示する際に が表示されてしまいます。
replace()結果を保存しているからだと思いますが。。。一度replace()しない状態で保存してみては?
は、ASCIIコードの \r\n です。(\rの文字コード0x0D,\nの文字コードは0x0Aで、10進数の表記にすると と になる) どのようにしてtextareaから値を取得して、それをどのようにして表示すると「 」のようになるのかを説明してくれませんか。
replace()を使用しないで保存してみました。しかし、保存されているテキストは「改行テスト 改行テスト」となっております。。
coco_bauer様、情報を更新いたしまいました。
javascript側ではなく、PHP側の処理の問題でしょうか、、
DBとプログラムの文字コードは関係するかもしれません。
DB、プログラム共にUTF-8を利用しています。
質問の趣旨とズレてしまいますが、「改行テスト 改行テスト」の文字列をPHP側で改行するにはどのように書けば良いのでしょうか、、
PHP側の処理を追記いたしました。
javascript,php共にreplaceの処理を外した場合はどうなりますか?また「PHP側で改行する」とはDBに入れるためでしょうか、HTML表示のためでしょうか?
mts10806様、ありがとうございます。PHPで受け取る際にFILTER_SANITIZE_SPECIAL_CHARSを外したところ、意図した保存を行うことができました。

回答1件
あなたの回答
tips
プレビュー