回答編集履歴
1
検証用コードを追記します。
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
|
+
```
|