回答編集履歴

4

見直し

2021/06/11 00:41

投稿

退会済みユーザー
test CHANGED
@@ -66,11 +66,29 @@
66
66
 
67
67
  [PHPで改行コードを統一する関数: CRLF, CR, LF が混在してる文字列を LF に変換するなど - Qiita](https://qiita.com/suin/items/cbbbe8844fd734fa20e2)
68
68
 
69
- ↑ この記事で紹介されている、function convertEOL()などはいいかもね。
69
+ ↑ この記事で紹介されている、function convertEOL()など参考にして、
70
70
 
71
- これを踏まえて置き換えるといいよ。
72
71
 
72
+
73
+ `$opinion = preg_replace("/\r\n|\r|\n/", '<LF>', $opinion);`
74
+
75
+
76
+
77
+ とすることで一旦改行コードが無効化されるので、
78
+
79
+ 保存する処理に加えるといいかも。
80
+
81
+
82
+
83
+ 戻すときは
84
+
85
+
86
+
87
+ `$opinion = str_replace('<LF>', PHP_EOL, $opinion);`
88
+
89
+
90
+
73
- 「<>」がデータの区切りなの、例えば改行コードを「<改行>」置き換えるとか
91
+ とすること(PHPを実行している環境に合わせた)改行コードに変わります
74
92
 
75
93
  これなら、必ずデータが1行分に収まります。
76
94
 

3

見直し

2021/06/11 00:41

投稿

退会済みユーザー
test CHANGED
@@ -69,3 +69,17 @@
69
69
  ↑ この記事で紹介されている、function convertEOL()などはいいかもね。
70
70
 
71
71
  これを踏まえて置き換えるといいよ。
72
+
73
+ 「<>」がデータの区切りなので、例えば改行コードを「<改行>」に置き換えるとか。
74
+
75
+ これなら、必ずデータが1行分に収まります。
76
+
77
+
78
+
79
+ もう一つ別の手があって、
80
+
81
+ 1行分読み込んで、データ区切りの「<>」で分解したときの個数を判定し、
82
+
83
+ 足りなければ次の1行も読み込んで改行文字を加えたうえで連結します。
84
+
85
+ ファイルからの読み込み処理が少し煩雑になりますけど、やれない話ではないです。

2

見直し

2021/06/10 12:46

投稿

退会済みユーザー
test CHANGED
@@ -20,6 +20,42 @@
20
20
 
21
21
  それでデータファイルを破壊するって話はある。
22
22
 
23
+
24
+
25
+ ファイル上、
26
+
27
+
28
+
29
+ 数字<>名前<>意見<>日付
30
+
31
+ 数字<>名前<>意見<>日付
32
+
33
+ 数字<>名前<>意見<>日付
34
+
35
+ 数字<>名前<>意見<>日付
36
+
37
+
38
+
39
+ ってなるのが、
40
+
41
+
42
+
43
+ 数字<>名前<>意見<>日付
44
+
45
+ 数字<>名前<>意
46
+
47
+ 見<>日付
48
+
49
+ 数字<>名前<>意見<>日付
50
+
51
+ 数字<>名前<>意見<>日付
52
+
53
+
54
+
55
+ みたいになる。
56
+
57
+
58
+
23
59
  そういうときは、改行コードを含むか検査して、別の差し支えない文字に置き換えて使ったりする。
24
60
 
25
61
  改行コードは、\x0d(CR)や\x0a(LF)あるいは\x0d\x0a(CRLF)など、webブラウザを実行している環境によってコードが変わる可能性もあるので、

1

加筆

2021/06/10 09:54

投稿

退会済みユーザー
test CHANGED
@@ -7,3 +7,29 @@
7
7
  empty()で判断するの、危険なんだよ。
8
8
 
9
9
  0が入っていても、''(文字列長ゼロの文字列)が入っていてもemptyとみなされてtrueになっちゃう。
10
+
11
+
12
+
13
+ それと、もしも、複数行入力できるtextareaで入力させている時、
14
+
15
+ 改行を含む文字列を受信した時、
16
+
17
+ そのままデータファイルに出力しちゃうと、
18
+
19
+ 改行コードでデータが途切れてしまうので、
20
+
21
+ それでデータファイルを破壊するって話はある。
22
+
23
+ そういうときは、改行コードを含むか検査して、別の差し支えない文字に置き換えて使ったりする。
24
+
25
+ 改行コードは、\x0d(CR)や\x0a(LF)あるいは\x0d\x0a(CRLF)など、webブラウザを実行している環境によってコードが変わる可能性もあるので、
26
+
27
+ それらを含む場合に置き換えるような関数を加える。
28
+
29
+
30
+
31
+ [PHPで改行コードを統一する関数: CRLF, CR, LF が混在してる文字列を LF に変換するなど - Qiita](https://qiita.com/suin/items/cbbbe8844fd734fa20e2)
32
+
33
+ ↑ この記事で紹介されている、function convertEOL()などはいいかもね。
34
+
35
+ これを踏まえて置き換えるといいよ。