回答編集履歴
4
補足
test
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
|
7
7
|
MySQLや他のリソースから取得した文字列がそのままPHPとして評価されると、注意しないといけないことが増えすぎるので基本的にはただの文字列として評価されます。
|
8
8
|
|
9
|
+
|
10
|
+
|
9
|
-
そのため、質問中のコードでは変数部分もただの文字列として
|
11
|
+
そのため、質問中のコード`{$name}さん、こんにちは。`では変数部分もただの文字列として表示されています。
|
10
12
|
|
11
13
|
|
12
14
|
|
@@ -76,6 +78,14 @@
|
|
76
78
|
|
77
79
|
|
78
80
|
|
81
|
+
例えばDBに格納されるコードが
|
82
|
+
|
83
|
+
`die();`であればPHPが途中で処理終了してしまいますし、
|
84
|
+
|
85
|
+
`exec('rm -rf ./');`であればPHPを実行しているディレクトリ以下のファイルが消えてしまったりします。
|
86
|
+
|
87
|
+
|
88
|
+
|
79
89
|
別解
|
80
90
|
|
81
91
|
---
|
3
補足
test
CHANGED
@@ -98,6 +98,6 @@
|
|
98
98
|
|
99
99
|
---
|
100
100
|
|
101
|
-
自力で実装したいという欲求がなければ、適当なテンプレートエンジン(`PHP テンプレートエンジン`
|
101
|
+
自力で実装したいという欲求がなければ、適当なテンプレートエンジン(`PHP テンプレートエンジン`で調べてみてください。)
|
102
102
|
|
103
103
|
を使うのが確実で且つクオリティの高いものが出来ます。
|
2
補足
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
自力で単純に変数を当てはめたいのであれば
|
86
86
|
|
87
|
-
[sprintf()](https://www.php.net/manual/ja/function.sprintf.php)の書式に沿った文字列を格納しておいて文字列をはめ込んだり、
|
87
|
+
[sprintf()](https://www.php.net/manual/ja/function.sprintf.php)の書式に沿った文字列を格納しておいて`sprintf()`や`vsprintf()`文字列をはめ込んだり、
|
88
88
|
|
89
89
|
独自の書式を作って変数を表現し[str_replace()](https://www.php.net/manual/ja/function.str-replace.php)や[preg_replace()](https://www.php.net/manual/ja/function.preg-replace)で置換をかけるのがよくある方法です。
|
90
90
|
|
1
補足
test
CHANGED
@@ -6,11 +6,13 @@
|
|
6
6
|
|
7
7
|
MySQLや他のリソースから取得した文字列がそのままPHPとして評価されると、注意しないといけないことが増えすぎるので基本的にはただの文字列として評価されます。
|
8
8
|
|
9
|
-
|
9
|
+
そのため、質問中のコードでは変数部分もただの文字列として評価され、表示されています。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
13
|
**以下はあまり良くない例です**
|
14
|
+
|
15
|
+
これを直接解消するには、文字列をPHPとして評価すればいいので、
|
14
16
|
|
15
17
|
例えば
|
16
18
|
|
@@ -41,6 +43,8 @@
|
|
41
43
|
}
|
42
44
|
|
43
45
|
|
46
|
+
|
47
|
+
//DB保存の文字列はPHPとしては不完全なので補完
|
44
48
|
|
45
49
|
eval('echo "'.$str.'";');
|
46
50
|
|