回答編集履歴
2
PruneMazuiさんのアドバイスより、mb_striposをstriposに修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
$keyword_count=0;
|
12
12
|
foreach($array as $value){
|
13
|
-
if(
|
13
|
+
if(stripos($value['name'],$match_keyword) !== false){
|
14
14
|
$keyword_count++;
|
15
15
|
}
|
16
16
|
}
|
@@ -21,16 +21,11 @@
|
|
21
21
|
- 変数名を変更しました。
|
22
22
|
- 検索する文字列を変数に入れ、扱いやすくしてみました。
|
23
23
|
- 配列のループ処理はforeachで代用できるため、これに変更しました。
|
24
|
-
- stristr()を
|
24
|
+
- stristr()をstripos()に変更しました。
|
25
25
|
|
26
26
|
[strstr()](http://php.net/manual/ja/function.strstr.php)は、文字列の検出に適していません。
|
27
27
|
公式ドキュメントにも、以下のようにあります。
|
28
28
|
|
29
29
|
> もし特定の haystack に needle があるかどうかを調べるだけの場合、 より高速でメモリ消費も少ない strpos() を代わりに使用してください。
|
30
30
|
|
31
|
-
公式ドキュメントの記述はこれのみですが、同じ理由で[stristr()](http://php.net/manual/ja/function.stristr.php)よりも[stripos()](http://php.net/manual/ja/function.stripos.php)が適していると考えました。
|
31
|
+
公式ドキュメントの記述はこれのみですが、同じ理由で[stristr()](http://php.net/manual/ja/function.stristr.php)よりも[stripos()](http://php.net/manual/ja/function.stripos.php)が適していると考えました。
|
32
|
-
|
33
|
-
また、検索文字列「PHP」が、実運用で日本語などのマルチバイト文字を含む場合、[マルチバイト文字列関数](http://php.net/manual/ja/ref.mbstring.php)がより適しています。
|
34
|
-
このため、[stripos()](http://php.net/manual/ja/function.stripos.php)のマルチバイト文字列関数である[mb_stripos()](http://php.net/manual/ja/function.mb-stripos.php)にしています。
|
35
|
-
|
36
|
-
なお、PHPを実行している文字コードは`UTF-8`としています。
|
1
「なお、」を追加
answer
CHANGED
@@ -33,4 +33,4 @@
|
|
33
33
|
また、検索文字列「PHP」が、実運用で日本語などのマルチバイト文字を含む場合、[マルチバイト文字列関数](http://php.net/manual/ja/ref.mbstring.php)がより適しています。
|
34
34
|
このため、[stripos()](http://php.net/manual/ja/function.stripos.php)のマルチバイト文字列関数である[mb_stripos()](http://php.net/manual/ja/function.mb-stripos.php)にしています。
|
35
35
|
|
36
|
-
PHPを実行している文字コードは`UTF-8`としています。
|
36
|
+
なお、PHPを実行している文字コードは`UTF-8`としています。
|