teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

検証用コードを追記します。

2016/03/21 08:51

投稿

lib
lib

スコア446

answer CHANGED
@@ -15,4 +15,39 @@
15
15
  h関数を配列ではない変数を引数として呼び出されたものは、配列ではないので2つ目の処理htmlspecialchars側に処理が変わります。
16
16
 
17
17
  したがって、配列だろうと、ただの変数だろうといずれにしてもhtmlspecialcharsを呼ぶようにする
18
- という仕様のようですね。ちょっとは便利か。
18
+ という仕様のようですね。ちょっとは便利か。
19
+
20
+ 追記 一応確認用のコードです:
21
+ ```php
22
+ <?php
23
+
24
+ function h( $var ) {
25
+ if ( is_array( $var ) ) {
26
+ return array_map( 'h', $var );
27
+ } else {
28
+ return htmlspecialchars( $var , ENT_QUOTES, 'utf-8' );
29
+ }
30
+ }
31
+
32
+ // --- 必要データ準備
33
+ $arrayvar = array(
34
+ "1" => "<h>配列</h>",
35
+ "2" => "<input type='text' value='配列2'>配列2",
36
+ "3" => "<script language='javascript'>alert('test');</script>",
37
+ "4" => ""
38
+ );
39
+
40
+ $avar = "<b>test</b>";
41
+ // -----------------------------------------------------
42
+
43
+ // --- 確認
44
+ echo "配列:" . "\n";
45
+ var_dump( h( $arrayvar ) );
46
+
47
+ echo "変数:" . "\n";
48
+ var_dump( h( $avar ) );
49
+
50
+ echo "ただの値:" . "\n";
51
+ var_dump(h ( "<h1>test</h1>" ) );
52
+
53
+ ```