回答編集履歴
2
結局やった
test
CHANGED
@@ -32,7 +32,9 @@
|
|
32
32
|
|
33
33
|
```PHP
|
34
34
|
|
35
|
-
$word
|
35
|
+
$word = "[A inu [B neko nyan [A tori] [AB kizi]] [B musi kabuto musi [CB taka]]]";
|
36
|
+
|
37
|
+
|
36
38
|
|
37
39
|
$down_lv = 0;
|
38
40
|
|
@@ -52,7 +54,7 @@
|
|
52
54
|
|
53
55
|
$b = explode(']', $up_word);
|
54
56
|
|
55
|
-
foreach ($b as $
|
57
|
+
foreach ($b as $key => $core_word) {
|
56
58
|
|
57
59
|
if ($key > 0) {
|
58
60
|
|
@@ -68,7 +70,9 @@
|
|
68
70
|
|
69
71
|
}
|
70
72
|
|
71
|
-
|
73
|
+
$left_word = mb_substr($target, 0, mb_strpos($target, ' '));
|
74
|
+
|
75
|
+
$right_word = mb_substr($target, mb_strpos($target, ' ') + 1);
|
72
76
|
|
73
77
|
$results[] = array(
|
74
78
|
|
@@ -84,11 +88,35 @@
|
|
84
88
|
|
85
89
|
}
|
86
90
|
|
87
|
-
```
|
88
91
|
|
89
92
|
|
93
|
+
// ここから出力して確認
|
90
94
|
|
95
|
+
foreach ($results as $seeds) {
|
96
|
+
|
97
|
+
echo "{$seeds[0]}, {$seeds[1]}, {$seeds[2]}\n";
|
98
|
+
|
99
|
+
}
|
100
|
+
|
101
|
+
/*
|
102
|
+
|
103
|
+
rank, type, str
|
104
|
+
|
105
|
+
1, A, inu
|
106
|
+
|
107
|
+
2, B, neko nyan
|
108
|
+
|
109
|
+
3, A, tori
|
110
|
+
|
111
|
+
3, AB, kizi
|
112
|
+
|
91
|
-
|
113
|
+
2, B, musi kabuto musi
|
114
|
+
|
115
|
+
3, CB, taka
|
116
|
+
|
117
|
+
*/
|
118
|
+
|
119
|
+
```
|
92
120
|
|
93
121
|
|
94
122
|
|
1
考慮漏れ対応
test
CHANGED
@@ -34,13 +34,13 @@
|
|
34
34
|
|
35
35
|
$word; // これが該当文字列
|
36
36
|
|
37
|
-
$a = explode('[', $word);
|
38
|
-
|
39
37
|
$down_lv = 0;
|
40
38
|
|
41
39
|
$results = array();
|
42
40
|
|
43
41
|
$results[] = array("rank", "type", "str");
|
42
|
+
|
43
|
+
$a = explode('[', $word);
|
44
44
|
|
45
45
|
foreach ($a as $base_lv => $up_word) {
|
46
46
|
|
@@ -56,11 +56,17 @@
|
|
56
56
|
|
57
57
|
if ($key > 0) {
|
58
58
|
|
59
|
-
$down_lv++;
|
59
|
+
$down_lv++; // 永続的にレベルダウンするので表示レベルが上がり続ける事はありません。
|
60
60
|
|
61
61
|
}
|
62
62
|
|
63
63
|
$target = trim($core_word);
|
64
|
+
|
65
|
+
if ($target === "") {
|
66
|
+
|
67
|
+
continue;
|
68
|
+
|
69
|
+
}
|
64
70
|
|
65
71
|
// さあ、$targetは「A ◯◯」の形式です。煮るなり焼くなり好きにしてください
|
66
72
|
|
@@ -83,3 +89,13 @@
|
|
83
89
|
|
84
90
|
|
85
91
|
全部は作ってないので未確認です、試してみて下さい。
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
ちなみにこの作戦だと、
|
96
|
+
|
97
|
+
全ての文字列を配列の中にぶち込んで作業するのでまぁまぁ富豪的で重いです。
|
98
|
+
|
99
|
+
本気でやるならmb_substrやmb_strpos、mb_strlenだけで最後までやり切るのが一番速いでしょうね。
|
100
|
+
|
101
|
+
やりたくは無いですが、回答者の回答の中で納得の速度が得られなければ試してみてください。
|