回答編集履歴

3

加筆修正

2018/05/21 10:46

投稿

退会済みユーザー
test CHANGED
@@ -63,3 +63,13 @@
63
63
  echo str_replace($keywords, $spans, $content);
64
64
 
65
65
  ```
66
+
67
+
68
+
69
+ あと、些細なこだわりだが、
70
+
71
+ 変数名が複数形の英単語を使う時は、array型のつもりでいた方が健全かもしれない。
72
+
73
+ なので、`$keyword`→`$keywords`としてarray型にして、
74
+
75
+ `$contents`→`$content`として単なるstring型としてわかりやすく配慮した。

2

加筆修正

2018/05/21 10:46

投稿

退会済みユーザー
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  $keywords = ['AAA', 'BBB'];
8
8
 
9
- $contents = "AAAのCCCがBBBである";
9
+ $content = "AAAのCCCがBBBである";
10
10
 
11
11
  $spans = array_map(function($var) {
12
12
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  }, $keywords);
16
16
 
17
- echo str_replace($keywords, $spans, $contents);
17
+ echo str_replace($keywords, $spans, $content);
18
18
 
19
19
  ```
20
20
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  $keywords = ['AAA', 'BBB'];
52
52
 
53
- $contents = "AAAのCCCがBBBである";
53
+ $content = "AAAのCCCがBBBである";
54
54
 
55
55
  $spans = [];
56
56
 
@@ -60,6 +60,6 @@
60
60
 
61
61
  }
62
62
 
63
- echo str_replace($keywords, $spans, $contents);
63
+ echo str_replace($keywords, $spans, $content);
64
64
 
65
65
  ```

1

加筆修正

2018/05/21 10:44

投稿

退会済みユーザー
test CHANGED
@@ -29,3 +29,37 @@
29
29
  [PHP: str_replace - Manual](http://php.net/manual/ja/function.str-replace.php)
30
30
 
31
31
  参照のこと。
32
+
33
+
34
+
35
+ やってることを解説すると、
36
+
37
+ `$keywords`に含まれるキーワード群を元に、
38
+
39
+ 置換後の語句を$spansに加工するのに、
40
+
41
+ array_map()と無名関数を使って簡単に書いている。
42
+
43
+ わかりやすくforeach()で書き直すとこうなる:
44
+
45
+ ```php
46
+
47
+ <?php
48
+
49
+
50
+
51
+ $keywords = ['AAA', 'BBB'];
52
+
53
+ $contents = "AAAのCCCがBBBである";
54
+
55
+ $spans = [];
56
+
57
+ foreach ($keywords as $var) {
58
+
59
+ $spans[] = '<span>' . $var . '</span>';
60
+
61
+ }
62
+
63
+ echo str_replace($keywords, $spans, $contents);
64
+
65
+ ```