質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

6605閲覧

jqueryでtextareaから取得した値の改行の取り扱い方法について

ssk

総合スコア332

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/08/23 02:18

編集2017/08/23 03:25

###前提・実現したいこと
テキストエリアから取得した値の改行が
のようになってしまいます。
データベースにも
が入っています。
どのように改行コードを変換?してあげれば良いでしょうか?

###該当のソースコード

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には改行テスト&#10;改行テストが入っています。 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);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/08/23 02:26

replace()を重ねられてますが、何か表示のためですか?
m.ts10806

2017/08/23 02:30

DBに入れるのであればreplace()せずにval()をそのまま突っ込んでそのまま表示すれば良いですよ。
ssk

2017/08/23 02:38

DBに入っているテキストが「改行テスト&#13;&#10;改行テスト」のため、表示する際に&#13;&#10;が表示されてしまいます。
m.ts10806

2017/08/23 02:42

replace()結果を保存しているからだと思いますが。。。一度replace()しない状態で保存してみては?
coco_bauer

2017/08/23 02:44

&#13;&#10; は、ASCIIコードの \r\n です。(\rの文字コード0x0D,\nの文字コードは0x0Aで、10進数の表記にすると&#13;と&#10;になる) どのようにしてtextareaから値を取得して、それをどのようにして表示すると「&#13;&#10;」のようになるのかを説明してくれませんか。
ssk

2017/08/23 02:45

replace()を使用しないで保存してみました。しかし、保存されているテキストは「改行テスト&#10;改行テスト」となっております。。
ssk

2017/08/23 02:50

coco_bauer様、情報を更新いたしまいました。
ssk

2017/08/23 03:10

javascript側ではなく、PHP側の処理の問題でしょうか、、
m.ts10806

2017/08/23 03:17

DBとプログラムの文字コードは関係するかもしれません。
ssk

2017/08/23 03:22

DB、プログラム共にUTF-8を利用しています。
ssk

2017/08/23 03:23

質問の趣旨とズレてしまいますが、「改行テスト&#10;改行テスト」の文字列をPHP側で改行するにはどのように書けば良いのでしょうか、、
ssk

2017/08/23 03:25

PHP側の処理を追記いたしました。
m.ts10806

2017/08/23 04:07

javascript,php共にreplaceの処理を外した場合はどうなりますか?また「PHP側で改行する」とはDBに入れるためでしょうか、HTML表示のためでしょうか?
ssk

2017/08/23 04:27

mts10806様、ありがとうございます。PHPで受け取る際にFILTER_SANITIZE_SPECIAL_CHARSを外したところ、意図した保存を行うことができました。
guest

回答1

0

自己解決

mts10806様、coco_bauer様
助言ありがとうございました。

javascript側の処理の問題かと思っていましたが
jsonで受け取ったPHP側の処理の問題でした。

下記、解決したコードを記載しておきます。
助言、誠にありがとうございました。

PHP

1$txt = (string) filter_input(INPUT_POST, 'val'); 2$val = preg_replace("/\r\n|\r|\n/", "\n", $txt);

投稿2017/08/23 06:53

ssk

総合スコア332

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問