質問するログイン新規登録

回答編集履歴

1

再帰呼び出しの追加

2016/01/25 13:13

投稿

otn
otn

スコア86367

answer CHANGED
@@ -3,4 +3,29 @@
3
3
  $pattern = '(((?>[^()]+)|(?R))*)';
4
4
 
5
5
  preg_match_all("/$pattern/ux",$str,$match,PREG_PATTERN_ORDER);
6
- ```
6
+ ```
7
+
8
+ 追記:
9
+ 得られた文字列をさらに処理する。
10
+ ```PHP
11
+ $str = "あいうえお(ひらがな(日本語)の場合。)は、かきくけこ(またはさしすせそ)より手前である。";
12
+
13
+ function foo($str){
14
+ $pattern = '((((?>[^()]+)|(?R))*))';
15
+ if(preg_match_all("/$pattern/ux",$str,$match,PREG_PATTERN_ORDER)){
16
+ $result = array();
17
+ foreach($match[0] as $i => $s){
18
+ array_push($result,$s);
19
+ $result = array_merge($result,foo($match[1][$i]));
20
+ }
21
+ return $result;
22
+ }else{
23
+ return array();
24
+ }
25
+ }
26
+
27
+ $result = foo($str);
28
+
29
+ print_r($result);
30
+ ```
31
+ 配列関数を熟知していたら、もうちょっとスマートに書けるような気がします。