回答編集履歴
4
加筆修正
answer
CHANGED
@@ -70,4 +70,9 @@
|
|
70
70
|
|
71
71
|
$str = to_kana($str, $romaji, $kana);
|
72
72
|
echo $str;
|
73
|
-
```
|
73
|
+
```
|
74
|
+
|
75
|
+
もしもこの先ローマ字領域全体に拡張するとなると、
|
76
|
+
'pya'みたいな3文字使うものを配列の先の方に置いて、
|
77
|
+
'n'はあ行らといっしょでいいかもしれません。
|
78
|
+
(「ん」をnnとするかnとするか、kaniを「かに」にせず「かんい」にするためのローマ字の工夫とか、検討事項はまだあるけども。)
|
3
加筆修正
answer
CHANGED
@@ -34,4 +34,40 @@
|
|
34
34
|
echo $str;
|
35
35
|
```
|
36
36
|
《実行結果》
|
37
|
-

|
37
|
+

|
38
|
+
|
39
|
+
正規表現パターンを駆使しないので、
|
40
|
+
preg_replace()でなくstr_replace()の方が少しでも処理が早くなる。
|
41
|
+
|
42
|
+
```php
|
43
|
+
<?php
|
44
|
+
|
45
|
+
function to_kana($str, $romaji, $kana){
|
46
|
+
|
47
|
+
//$patterns = [];
|
48
|
+
//foreach($romaji as $value){
|
49
|
+
// $patterns[] = '/' . $value . '/';
|
50
|
+
//}
|
51
|
+
|
52
|
+
//$str = preg_replace($patterns, $kana, $str);
|
53
|
+
$str = str_replace($romaji, $kana, $str);
|
54
|
+
return $str;
|
55
|
+
|
56
|
+
}
|
57
|
+
|
58
|
+
$kana = [
|
59
|
+
'か', 'き', 'く', 'け', 'こ',
|
60
|
+
'あ', 'い', 'う', 'え', 'お',
|
61
|
+
];
|
62
|
+
|
63
|
+
$romaji = [
|
64
|
+
'ka', 'ki', 'ku', 'ke', 'ko',
|
65
|
+
'a', 'i', 'u', 'e', 'o',
|
66
|
+
];
|
67
|
+
|
68
|
+
|
69
|
+
$str = "aki"; // あき
|
70
|
+
|
71
|
+
$str = to_kana($str, $romaji, $kana);
|
72
|
+
echo $str;
|
73
|
+
```
|
2
加筆修正
answer
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
なんか間違った回答を投稿した気がするけど、見直しました。
|
2
|
+
あ行の置き換えを最後に回すしか無いと考えます。
|
3
|
+
kaのaを先に置き換えてしまうとkなど子音のみ残ってしまうのは当たり前です。
|
4
|
+
|
2
5
|
```php
|
3
6
|
<?php
|
4
7
|
|
1
見直し
answer
CHANGED
@@ -1,28 +1,27 @@
|
|
1
|
-
|
1
|
+
なんか間違った回答を投稿した気がするけど、見直しました。
|
2
2
|
```php
|
3
3
|
<?php
|
4
4
|
|
5
5
|
function to_kana($str, $romaji, $kana){
|
6
6
|
|
7
7
|
$patterns = [];
|
8
|
-
|
8
|
+
foreach($romaji as $value){
|
9
|
-
|
9
|
+
$patterns[] = '/' . $value . '/';
|
10
|
-
|
10
|
+
}
|
11
11
|
|
12
|
-
//$str = preg_replace($patterns, $kana, $str);
|
13
|
-
$str =
|
12
|
+
$str = preg_replace($patterns, $kana, $str);
|
14
13
|
return $str;
|
15
14
|
|
16
15
|
}
|
17
16
|
|
18
17
|
$kana = [
|
19
|
-
'あ', 'い', 'う', 'え', 'お',
|
20
18
|
'か', 'き', 'く', 'け', 'こ',
|
19
|
+
'あ', 'い', 'う', 'え', 'お', // あ行は最後!
|
21
20
|
];
|
22
21
|
|
23
22
|
$romaji = [
|
24
|
-
'a', 'i', 'u', 'e', 'o',
|
25
23
|
'ka', 'ki', 'ku', 'ke', 'ko',
|
24
|
+
'a', 'i', 'u', 'e', 'o', // あ行は最後!
|
26
25
|
];
|
27
26
|
|
28
27
|
|
@@ -32,4 +31,4 @@
|
|
32
31
|
echo $str;
|
33
32
|
```
|
34
33
|
《実行結果》
|
35
|
-

|