回答編集履歴

2

修正版

2018/02/09 08:57

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  array_walk($a,function($x) use(&$b){
52
52
 
53
- $pattern="/(?<= ).+$/";
53
+ $pattern="/(?<=\s)\S+$/";
54
54
 
55
55
  if(preg_match($pattern,$x,$match)){
56
56
 
@@ -119,3 +119,55 @@
119
119
  print_r($b);
120
120
 
121
121
  ```
122
+
123
+ # 修正
124
+
125
+
126
+
127
+ 最初の例示はセパレータに全角スペースがはいっていましたが
128
+
129
+ 追記いただいたソースでは半角スペースになってますね
130
+
131
+ それではヒットしません、空白文字を利用していいならこうなります
132
+
133
+
134
+
135
+ ```PHP
136
+
137
+ <?PHP
138
+
139
+ $a=[
140
+
141
+ "2017/01/01 10:05:36 東京 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
142
+
143
+ "2017/01/01 10:05:36 東京 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
144
+
145
+ "2017/01/01 10:05:36 大阪 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** bbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
146
+
147
+ "2017/01/01 10:05:36 大阪 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** bbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
148
+
149
+ "2017/01/01 10:05:36 大阪 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** bbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
150
+
151
+ "2017/01/01 10:05:36 東京 TEST_TEST_TEST_TEST_TEST type=0 code=**.**.** aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
152
+
153
+ ];
154
+
155
+ $b=[];
156
+
157
+ array_walk($a,function($x) use(&$b){
158
+
159
+ $pattern="/(?<=\s)\S+$/";
160
+
161
+ if(preg_match($pattern,$x,$match)){
162
+
163
+ $b[]=$match[0];
164
+
165
+ }
166
+
167
+ });
168
+
169
+ $b=array_unique($b);
170
+
171
+ print_r($b);
172
+
173
+ ```

1

追記

2018/02/09 08:57

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -67,3 +67,55 @@
67
67
  ```
68
68
 
69
69
  こうした上で、キーを「sample○○」にする根拠があれば提示下さい
70
+
71
+
72
+
73
+ # 追記
74
+
75
+
76
+
77
+ もしかしたら、元データは配列じゃなくて文字列ってことですか?
78
+
79
+ ```PHP
80
+
81
+ $a=<<<eof
82
+
83
+ 2017/1/1 00:00:00 東京 aaaaaaaaaaaaaaaa
84
+
85
+ 2017/1/1 00:00:00 東京 aaaaaaaaaaaaaaaa
86
+
87
+ 2017/1/1 00:00:00 東京 aaaaaaaaaaaaaaaa
88
+
89
+ 2017/1/1 00:00:00 大阪 bbbbbbbbbbbbbbbb
90
+
91
+ 2017/1/1 00:00:00 大阪 bbbbbbbbbbbbbbbb
92
+
93
+ 2017/1/1 00:00:00 大阪 bbbbbbbbbbbbbbbb
94
+
95
+ 2017/1/1 00:00:00 大阪 bbbbbbbbbbbbbbbb
96
+
97
+ 2017/1/1 00:00:00 大阪 bbbbbbbbbbbbbbbb
98
+
99
+ 2017/1/1 00:00:00 福岡 cccccccccccccccc
100
+
101
+ 2017/1/1 00:00:00 福岡 cccccccccccccccc
102
+
103
+ 2017/1/1 00:00:00 福岡 cccccccccccccccc
104
+
105
+ 2017/1/1 00:00:00 福岡 cccccccccccccccc
106
+
107
+ 2017/1/1 00:00:00 福岡 cccccccccccccccc
108
+
109
+ eof;
110
+
111
+
112
+
113
+ $pattern="/(?<= ).+$/m";
114
+
115
+ preg_match_all($pattern,$a,$match);
116
+
117
+ $b=array_unique($match[0]);
118
+
119
+ print_r($b);
120
+
121
+ ```