接下来这个是一个toHtml($value)的函数,研究学习。
function toHtml($value) { return is_array($value) ? array_map('toHtml', $value) : htmlspecialchars(stripslashes($value)); //array_map 函数返回用户自定义函数作用后的数组 看了一下实例,输出结果一般为:Array ( [0] => Horse [1] => Fido [2] => Cat ) //stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。 其实就是清除了反斜杠 //htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。 //所以,这个函数的意思就是,如果用户留言的$value是一个数组,那么返回array_map('toHtml', $value) ,如果用户留言的$value不是数组,就用函数整理一下 //最终结果结果就是这个函数,表示,一直循环,直到用户留言的$value为一个数组! }
下面是这个自定义函数用到的函数
array_map()例子
<?php function myfunction($v) { if ($v==="Dog") { return "Fido"; } return $v; } $a=array("Horse","Dog","Cat"); print_r(array_map("myfunction",$a)); ?>
输出:
Array ( [0] => Horse [1] => Fido [2] => Cat )
stripslashes()例子
<?php echo stripslashes("Who\'s John Adams?"); ?>
输出:
Who's John Adams?
addslashes()例子
在本例中,我们要向字符串中的预定义字符添加反斜杠:
<?php $str = "Who's John Adams?"; echo $str . " This is not safe in a database query.<br />"; echo addslashes($str) . " This is safe in a database query."; ?>
输出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
htmlspecialchars()例子
函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
- & (和号) 成为 &
- " (双引号) 成为 "
- ' (单引号) 成为 '
- < (小于) 成为 <
- > (大于) 成为 >
<?php $str = "John & 'Adams'"; echo htmlspecialchars($str, ENT_COMPAT); //只转换双引号 echo "<br />"; echo htmlspecialchars($str, ENT_QUOTES); //转换单、双引号 echo "<br />"; echo htmlspecialchars($str, ENT_NOQUOTES); //都不转换 ?>
浏览器输出:
John & 'Adams' John & 'Adams' John & 'Adams'
如果在浏览器中查看源代码,会看到这些 HTML:
<html> <body> John & 'Adams'<br /> John & 'Adams'<br /> John & 'Adams' </body> </html>