回答編集履歴

1

再帰呼び出しの追加

2016/01/25 13:13

投稿

otn
otn

スコア84555

test CHANGED
@@ -9,3 +9,53 @@
9
9
  preg_match_all("/$pattern/ux",$str,$match,PREG_PATTERN_ORDER);
10
10
 
11
11
  ```
12
+
13
+
14
+
15
+ 追記:
16
+
17
+ 得られた文字列をさらに処理する。
18
+
19
+ ```PHP
20
+
21
+ $str = "あいうえお(ひらがな(日本語)の場合。)は、かきくけこ(またはさしすせそ)より手前である。";
22
+
23
+
24
+
25
+ function foo($str){
26
+
27
+ $pattern = '((((?>[^()]+)|(?R))*))';
28
+
29
+ if(preg_match_all("/$pattern/ux",$str,$match,PREG_PATTERN_ORDER)){
30
+
31
+ $result = array();
32
+
33
+ foreach($match[0] as $i => $s){
34
+
35
+ array_push($result,$s);
36
+
37
+ $result = array_merge($result,foo($match[1][$i]));
38
+
39
+ }
40
+
41
+ return $result;
42
+
43
+ }else{
44
+
45
+ return array();
46
+
47
+ }
48
+
49
+ }
50
+
51
+
52
+
53
+ $result = foo($str);
54
+
55
+
56
+
57
+ print_r($result);
58
+
59
+ ```
60
+
61
+ 配列関数を熟知していたら、もうちょっとスマートに書けるような気がします。