回答編集履歴

6

誤記修正

2016/12/09 14:35

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -120,11 +120,11 @@
120
120
 
121
121
  ###方法3
122
122
 
123
- - 対象のテキストファイルを全て読み込み(行ごとのarrayに読み込む)
123
+ 0. 対象のテキストファイルを全て読み込み(行ごとのarrayに読み込む)
124
124
 
125
- - 読み込んだarray3番目の要素の前に改行を2つの要素として挿入
125
+ 0. 読み込んだarray3番目の要素の前に改行を2つの要素として挿入
126
126
 
127
- - 2の結果を出力
127
+ 0. 2の結果を出力
128
128
 
129
129
 
130
130
 

5

コメントを受けて方法3を追加

2016/12/09 14:35

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -114,7 +114,31 @@
114
114
 
115
115
  $data = file_put_contents('sample.txt', $out);
116
116
 
117
+ ```
117
118
 
119
+
120
+
121
+ ###方法3
122
+
123
+ - 対象のテキストファイルを全て読み込み(行ごとのarrayに読み込む)
124
+
125
+ - 読み込んだarray3番目の要素の前に改行を2つの要素として挿入
126
+
127
+ - 2の結果を出力
128
+
129
+
130
+
131
+ ```PHP
132
+
133
+ <?php
134
+
135
+ $filepath = 書き込むファイルの絶対パス
136
+
137
+ $ret_array = file($filepath);
138
+
139
+ $ret_array = array_splice($ret_array,2,0, array("\n", "\n"));
140
+
141
+ file_put_contents($filepath, $ret_array);
118
142
 
119
143
  ```
120
144
 

4

コメントを受けて結果を追加&コードにdisplay_errors,error_reporting追加

2016/12/09 14:26

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -17,6 +17,10 @@
17
17
  ```PHP
18
18
 
19
19
  <?php
20
+
21
+ ini_set( 'display_errors', 1 );
22
+
23
+ ini_set( 'error_reporting', E_ALL );
20
24
 
21
25
  $lines = file('sample.txt');
22
26
 
@@ -38,7 +42,49 @@
38
42
 
39
43
  fclose($fp);
40
44
 
45
+ ```
41
46
 
47
+
48
+
49
+ 結果
50
+
51
+ ```PHP
52
+
53
+ $ cat sample.txt
54
+
55
+ a
56
+
57
+ a
58
+
59
+ a
60
+
61
+ $ od -tx1 sample.txt
62
+
63
+ 0000000 61 0a 61 0a 61 0a
64
+
65
+ 0000006
66
+
67
+ $ php ins2line.php
68
+
69
+ $ cat sample.txt
70
+
71
+ a
72
+
73
+ a
74
+
75
+
76
+
77
+
78
+
79
+ a
80
+
81
+ $ od -tx1 sample.txt
82
+
83
+ 0000000 61 0a 61 0a 0a 0a 61 0a
84
+
85
+ 0000010
86
+
87
+ $
42
88
 
43
89
  ```
44
90
 
@@ -58,6 +104,10 @@
58
104
 
59
105
  <?php
60
106
 
107
+ ini_set( 'display_errors', 1 );
108
+
109
+ ini_set( 'error_reporting', E_ALL );
110
+
61
111
  $data = file_get_contents('sample.txt');
62
112
 
63
113
  $out = preg_replace("/^(.*\n.*\n)(.*)/", '${1}' . "\n\n" . '${2}', $data);

3

コードブロックに修正

2016/12/09 06:38

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -54,6 +54,8 @@
54
54
 
55
55
 
56
56
 
57
+ ```PHP
58
+
57
59
  <?php
58
60
 
59
61
  $data = file_get_contents('sample.txt');
@@ -63,3 +65,7 @@
63
65
  $data = file_put_contents('sample.txt', $out);
64
66
 
65
67
 
68
+
69
+ ```
70
+
71
+

2

回答追加

2016/12/08 05:38

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,6 +1,8 @@
1
1
  いろんなやり方があるとは思いますが、テキストファイル操作なので行を挿入するというより以下のような処理になります。
2
2
 
3
3
 
4
+
5
+ ###方法1
4
6
 
5
7
  - 対象のテキストファイルを全て読み込み
6
8
 
@@ -39,3 +41,25 @@
39
41
 
40
42
 
41
43
  ```
44
+
45
+
46
+
47
+ ###方法2
48
+
49
+ - 対象のテキストファイルを全て読み込み
50
+
51
+ - 読み込んだものを文字列整形
52
+
53
+ - 文字列成形したものを出力
54
+
55
+
56
+
57
+ <?php
58
+
59
+ $data = file_get_contents('sample.txt');
60
+
61
+ $out = preg_replace("/^(.*\n.*\n)(.*)/", '${1}' . "\n\n" . '${2}', $data);
62
+
63
+ $data = file_put_contents('sample.txt', $out);
64
+
65
+

1

追記

2016/12/08 05:37

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,3 +1,17 @@
1
+ いろんなやり方があるとは思いますが、テキストファイル操作なので行を挿入するというより以下のような処理になります。
2
+
3
+
4
+
5
+ - 対象のテキストファイルを全て読み込み
6
+
7
+ - 「挿入する位置までの行」を出力
8
+
9
+ - 「挿入する行」を出力
10
+
11
+ - 「挿入する位置以降の行」を出力
12
+
13
+
14
+
1
15
  ```PHP
2
16
 
3
17
  <?php