phpで配列の値をエスケープする

配列の各値をエスケープする方法をメモ。

1次元配列

配列の値をエスケープする場合、foreachで行えます。

PHP

<?php
$array = array(
	'str' => 'ラブライブ!',
	'tags' => '<div class="maki"></div>',
	'apos' => "I'm Erichika!",
	'and' => 'MYTH & ROID'
);
foreach($array as $key => $value) {
	$array[$key] = htmlspecialchars($value);
}
var_dump($array);
?>

以下の値が出力されます。

array(4) {
  ["str"]=>
  string(16) "ラブライブ!"
  ["tags"]=>
  string(46) "&lt;div class=&quot;maki&quot;&gt;&lt;/div&gt;"
  ["apos"]=>
  string(13) "I'm Erichika!"
  ["and"]=>
  string(15) "MYTH &amp; ROID"
}

1次元配列のエスケープのデモページ
 

「’」もエスケープしたい場合、htmlspecialcharsの第2引数にENT_QUOTESを指定します。

PHP

<?php
$array = array(
	'str' => 'ラブライブ!',
	'tags' => '<div class="maki"></div>',
	'apos' => "I'm Erichika!",
	'and' => 'MYTH & ROID'
);
foreach($array as $key => $value) {
	$array[$key] = htmlspecialchars($value, ENT_QUOTES);
}
var_dump($array);
?>

以下の値が出力されます。

array(4) {
  ["str"]=>
  string(16) "ラブライブ!"
  ["tags"]=>
  string(46) "&lt;div class=&quot;maki&quot;&gt;&lt;/div&gt;"
  ["apos"]=>
  string(18) "I&#039;m Erichika!"
  ["and"]=>
  string(15) "MYTH &amp; ROID"
}

1次元配列のエスケープのデモページ2
 

foreachではなくarray_map()でもエスケープを行えます。

PHP

<?php
$array = array(
	'str' => 'ラブライブ!',
	'tags' => '<div class="maki"></div>',
	'apos' => "I'm Erichika!",
	'and' => 'MYTH & ROID'
);
$array2 = array_map('htmlspecialchars', $array);
var_dump($array2);
?>

以下の値が出力されます。

array(4) {
  ["str"]=>
  string(16) "ラブライブ!"
  ["tags"]=>
  string(46) "&lt;div class=&quot;maki&quot;&gt;&lt;/div&gt;"
  ["apos"]=>
  string(13) "I'm Erichika!"
  ["and"]=>
  string(15) "MYTH &amp; ROID"
}

1次元配列のエスケープのデモページ3
 

多次元配列

配列をエスケープする関数を用意しておいて、エスケープする値が配列の場合は、その値に対してエスケープの関数を実行するようにします。

PHP

<?php
$array = array(
	'str' => 'ラブライブ!',
	'tags' => array(
		'maki' => '<div class="maki"></div>',
		'rin' => '<div class="rin"></div>',
		'hanayo' => '<div class="kayo"></div>'
	),
	'apos' => "I'm Erichika!",
	'and' => 'MYTH & ROID'
);

function escape($array) {
	foreach($array as $key => $value) {
		if (is_array($value)) {
			$array[$key] = escape($value);
		} else {
			$array[$key] = htmlspecialchars($value);
		}
	}
	return $array;
}

$array2 = escape($array);
var_dump($array2);
?>

以下の値が出力されます。

array(4) {
  ["str"]=>
  string(16) "ラブライブ!"
  ["tags"]=>
  array(3) {
    ["maki"]=>
    string(46) "&lt;div class=&quot;maki&quot;&gt;&lt;/div&gt;"
    ["rin"]=>
    string(45) "&lt;div class=&quot;rin&quot;&gt;&lt;/div&gt;"
    ["hanayo"]=>
    string(46) "&lt;div class=&quot;kayo&quot;&gt;&lt;/div&gt;"
  }
  ["apos"]=>
  string(13) "I'm Erichika!"
  ["and"]=>
  string(15) "MYTH &amp; ROID"
}

多次元配列のエスケープのデモページ
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930