回答編集履歴

2

微修正

2018/05/09 02:29

投稿

退会済みユーザー
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  これで正しく <textarea> 内に改行付きで表示されます。
34
34
 
35
- nl2br の挙動が理解できていれば、辿り着ける回答です。
35
+ nl2br の挙動が理解できていれば、nl2br が余計なことしてるって辿り着けると思います。
36
36
 
37
37
 
38
38
 

1

追記

2018/05/09 02:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,65 @@
1
1
  nl2br がなにやってるか調べてみてください。
2
+
3
+
4
+
5
+ **追記**
6
+
7
+ <br />
8
+
9
+ で改行されないってことなので、<textarea> の入力を <textarea> へ出力したいのだと認識して回答を書いています。
10
+
11
+
12
+
13
+ ```php
14
+
15
+ <?php
16
+
17
+ $textarea = "hoge\r\nhoge\r\nhoge\r\n";
18
+
19
+ $textarea = htmlspecialchars($textarea);
20
+
21
+ $file = 'file.txt';
22
+
23
+ file_put_contents ($file, json_encode($textarea));
24
+
25
+ $text = json_decode(file_get_contents('./'.$file));
26
+
27
+ ?>
28
+
29
+ <textarea><?php echo $text;?></textarea>
30
+
31
+ ```
32
+
33
+ これで正しく <textarea> 内に改行付きで表示されます。
34
+
35
+ nl2br の挙動が理解できていれば、辿り着ける回答です。
36
+
37
+
38
+
39
+ ちなみに、複数の方から指摘がありますが、htmlspecialchars は表示する際にエスケープする関数なので、表示の際に使用するのが適切です。
40
+
41
+ 入力値は生のまま持つのが基本です。
42
+
43
+
44
+
45
+ ```php
46
+
47
+ <?php
48
+
49
+ $textarea = "hoge\r\nhoge\r\nhoge\r\n";
50
+
51
+ $file = 'file.txt';
52
+
53
+ file_put_contents ($file, json_encode($textarea));
54
+
55
+ $text = json_decode(file_get_contents('./'.$file));
56
+
57
+ ?>
58
+
59
+ <textarea><?php echo htmlspecialchars($text, ENT_QUOTES, 'UTF-8');?></textarea>
60
+
61
+ ```
62
+
63
+ あと、コードは最低限再現するものを記述しないと、まともに回答できません。
64
+
65
+ 今回の回答はエスパー回答です。