<html>
<body>
<B>WebServer:</B>&'Linux'&'Apache'<br> //没有转换单引号
<B>WebServer:</B>&'Linux'&'Apache'<br>
<B>WebServer:</B>&'Linux'&'Apache' //没有转换单引号
</body>
</html>
在PHP中还提供了htmlentities()函数,可以将所有的非ASCII码字符转换为对应的实体代码。该函数与htmlspecialchars()函数的使用语法格式一致,该函数可以转义更多的HTML字符。下面的代码为htmlentities()函数的使用范例:
复制代码 代码如下:
<?php
$str = "一个'quote'是<b>bold</b>";
//输出&0qrave;»¸ö 'quote' ÊÇ <b> <:b>bold</b>
echo htmlentities($str);
//输出:一个'quote' 是 <b>bold</b>
echo htmlentities($str,ENT_QUOTES,gb2312);
?>
在处理表单中提交的数据时,不仅要通过前面介绍的函数将HTML的标记符号和一些特殊字符转换为HTML实体,还需要对引号进行处理。因为被提交的表单数据中的“'”、“””和“\”等字符前将自动加上一个斜线“\”。这是由于PHP配置文件php.ini中的选项magic_quotes_gpc在起作用,默认是打开的,如果不关闭它则要使用函数stripslashes()删除反斜线。如果不处理,将数据保存到数据库中时,有可能会被数据库误当成控制符号而引起错误。函数stripslashes()只有一个被处理字符串作为参数,返回处理后的字符串。通常使用htmlspecialchars()函数与stripslashes()函数复合的方式,联合处理表单中提交的数据。
函数stripslashes()的功能是去掉反斜线“\”,如果有连续两个反斜线,则只去掉一个。与之对应的是另一个函数addslashes(),正如函数名所暗示的,它将在“'”、“””、“\”和NULL字符等前增加必要的反斜线。
函数htmlspecialchars()是将函数HTML中的标记符号转换为对应的HTML实体,有时直接删除用户输入的HTML标签,也是非常有必要的。PHP中提供的strip_tags()函数默认就可以删除字符串中所有的HTML标签,也可以有选择性地删除一些HTML标记。如布告栏或是访客留言板,有这方面的应用是相当必要的。例如用户在论坛中发布文章时,可以预留一些可以改变字体大小、颜色、粗体和斜体等的HTML标记,而删除一些对页面布局有影响的HTML标记。函数strip_tags()的原型如下所示:
复制代码 代码如下:
string strip_tags(string str[,string allowable_tags]); //删除HTML的标签函数
该函数有两个参数,第一个参数提供了要处理的字符串,第二个参数是一个可选的HTML标签列表,放入该列表中的HTML标签将被保留,其他的则全部被删除。默认将所有HTML标签都删除。下面的程序为该函数的使用范围,如下所示:
复制代码 代码如下:
<?php
$str = "<font color='red' size=7>Linux</font> <i>Apache</i> <u>Mysql</u> <b>PHP</b>";
echo strip_tags($str); //删除了全部HTML标签,输出:Linux Apache Mysql PHP
echo strip_tags($str,"<font>"); //输出<font color='red' size=7>Linux</font>Apache Mysql PHP
echo strip_tags($str,"<b><u><i>"); //输出Linux <i>Apache</i> <u>Mysql</u> <b>PHP</b>
?>
四、其他字符串格式化函数
字符串的格式化处理函数还有很多,只要是想得到所需要格式化的字符串,都可以调用PHP中提供的系统函数处理,很少需要自己定义字符串格式化函数。
①函数strrev()
该函数的作用是将输入的字符串反转,只提供一个要处理的字符串作为参数,返回翻转后的字符串。如下所示:
复制代码 代码如下:
<?php
echo strrev("http://www.lampbrother.net"); //反转后输出:ten.rehtorbpmal.www//:ptth
?>
②函数number_format()
number_format()函数通过千位分组来格式化数字。该函数如下所示:
复制代码 代码如下:
string number_format(float number[,int decimals[,string dec_point,string thousands_sep]])
复制代码 代码如下: