回答編集履歴

4

加筆修正

2018/06/01 12:48

投稿

退会済みユーザー
test CHANGED
@@ -143,3 +143,13 @@
143
143
  echo $str;
144
144
 
145
145
  ```
146
+
147
+
148
+
149
+ もしもこの先ローマ字領域全体に拡張するとなると、
150
+
151
+ 'pya'みたいな3文字使うものを配列の先の方に置いて、
152
+
153
+ 'n'はあ行らといっしょでいいかもしれません。
154
+
155
+ (「ん」をnnとするかnとするか、kaniを「かに」にせず「かんい」にするためのローマ字の工夫とか、検討事項はまだあるけども。)

3

加筆修正

2018/06/01 12:48

投稿

退会済みユーザー
test CHANGED
@@ -71,3 +71,75 @@
71
71
  《実行結果》
72
72
 
73
73
  ![イメージ説明](e222f7a8254dd0ac901d095cb18ca6b3.png)
74
+
75
+
76
+
77
+ 正規表現パターンを駆使しないので、
78
+
79
+ preg_replace()でなくstr_replace()の方が少しでも処理が早くなる。
80
+
81
+
82
+
83
+ ```php
84
+
85
+ <?php
86
+
87
+
88
+
89
+ function to_kana($str, $romaji, $kana){
90
+
91
+
92
+
93
+ //$patterns = [];
94
+
95
+ //foreach($romaji as $value){
96
+
97
+ // $patterns[] = '/' . $value . '/';
98
+
99
+ //}
100
+
101
+
102
+
103
+ //$str = preg_replace($patterns, $kana, $str);
104
+
105
+ $str = str_replace($romaji, $kana, $str);
106
+
107
+ return $str;
108
+
109
+
110
+
111
+ }
112
+
113
+
114
+
115
+ $kana = [
116
+
117
+ 'か', 'き', 'く', 'け', 'こ',
118
+
119
+ 'あ', 'い', 'う', 'え', 'お',
120
+
121
+ ];
122
+
123
+
124
+
125
+ $romaji = [
126
+
127
+ 'ka', 'ki', 'ku', 'ke', 'ko',
128
+
129
+ 'a', 'i', 'u', 'e', 'o',
130
+
131
+ ];
132
+
133
+
134
+
135
+
136
+
137
+ $str = "aki"; // あき
138
+
139
+
140
+
141
+ $str = to_kana($str, $romaji, $kana);
142
+
143
+ echo $str;
144
+
145
+ ```

2

加筆修正

2018/06/01 10:41

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,10 @@
1
1
  なんか間違った回答を投稿した気がするけど、見直しました。
2
+
3
+ あ行の置き換えを最後に回すしか無いと考えます。
4
+
5
+ kaのaを先に置き換えてしまうとkなど子音のみ残ってしまうのは当たり前です。
6
+
7
+
2
8
 
3
9
  ```php
4
10
 

1

見直し

2018/06/01 10:17

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- str_replace()で十分案件
1
+ んか間違った回答を投稿した気がするけど、見直しました
2
2
 
3
3
  ```php
4
4
 
@@ -12,17 +12,15 @@
12
12
 
13
13
  $patterns = [];
14
14
 
15
- //foreach($romaji as $value){
15
+ foreach($romaji as $value){
16
16
 
17
- // $patterns[] = '/' . $value . '/';
17
+ $patterns[] = '/' . $value . '/';
18
18
 
19
- //}
19
+ }
20
20
 
21
21
 
22
22
 
23
- //$str = preg_replace($patterns, $kana, $str);
24
-
25
- $str = str_replace($patterns, $kana, $str);
23
+ $str = preg_replace($patterns, $kana, $str);
26
24
 
27
25
  return $str;
28
26
 
@@ -34,9 +32,9 @@
34
32
 
35
33
  $kana = [
36
34
 
37
- '', '', '', '', '',
35
+ '', '', '', '', '',
38
36
 
39
- '', '', '', '', '',
37
+ '', '', '', '', '', // あ行は最後!
40
38
 
41
39
  ];
42
40
 
@@ -44,9 +42,9 @@
44
42
 
45
43
  $romaji = [
46
44
 
47
- 'a', 'i', 'u', 'e', 'o',
45
+ 'ka', 'ki', 'ku', 'ke', 'ko',
48
46
 
49
- 'ka', 'ki', 'ku', 'ke', 'ko',
47
+ 'a', 'i', 'u', 'e', 'o', // あ行は最後!
50
48
 
51
49
  ];
52
50
 
@@ -66,4 +64,4 @@
66
64
 
67
65
  《実行結果》
68
66
 
69
- ![実行結果](9e5ca3fe466191540af9a555aa3fe92a.png)
67
+ ![イメージ説明](e222f7a8254dd0ac901d095cb18ca6b3.png)