格式化字符串意味着将字符串处理为特定的格式。通常,用户从表单提交给服务器的数据是字符串形式的。为了达到预期的输出效果,在使用这些字符串之前,需要按照一定的格式进行处理。下图显示了常见的字符串格式化函数:
注意:大多数由PHP中提供的字符串函数处理的字符串不会在原始字符串上进行修改,而是返回一个新的格式化字符串。
首先,取出空格和字符串填充功能
空格也是一个有效的字符,它也占据了字符串中的一个位置。当用户在表单中输入数据时,他们经常会无意中输入更多没有意义的空格。因此,当PHP脚本接收到表单处理的数据时,首先要处理的是字符串或其他无意义符号中的额外空间。在PHP中,可以通过ltrim()、rtrim()和trim()函数来实现。这三个函数具有相同的语法格式,但功能不同。它们的语法格式如下:Copy code如下: String ltrim (String str [,String charlist]) //Delete spaces或其他预定义字符string rtrim(string str[,String charlist])//从字符串trim (String str [,String charlist])右侧删除空白或其他预定义字符//从字符串两端删除空白或其他预定义字符这三个函数分别用于从字符串的左侧、右侧和两端删除空白或其他预定义字符。处理后的结果将以新字符串的形式返回,不会对原始字符串进行修改。第一个参数字符串是需要处理的字符串。第二个参数charlist是一个过滤器字符串,用于指定要删除的特殊符号。此参数是可选的。如果不指定筛选器字符串,默认情况下将删除以下字符。
“‘:空格’0”:空“ t”:制表符“ n”:新行“ r”:输入
此外,您可以使用“.”符号来指定要删除的范围,例如,“0.9 "或" a ".“z”表示从ASCII码值中删除数字和小写字母。它们的使用代码如下:复制代码如下:php$str='123这是一个测试.';//声明一个测试字符串,数字从左边开始,省略号回显ltrim($str,' 0.9’)在右边;//过滤掉字符串左侧的数字并输出这是一个测试.echo rtrim ($ str,'.')//过滤掉所有" "在字符串和输出的右侧:123这是一个测试回声微调($ str,' 0.9 a.z ');//过滤掉数字、大写字母和“.”在字符串的两端并输出:这是一个测试吗?
不仅可以根据需要过滤掉字符串的内容,还可以根据需要使用str_pad()函数填充字符串。它可以用来保护一些敏感信息,如数据对齐等。其函数原型如下:复制代码如下: String str _ pad (String input,int pad _ length [,string pad _ string [,int pad _ type]])这个函数有四个参数,第一个参数表示要处理的字符串。第二个参数给出了处理后的字符串的长度。如果该值小于原始字符串的长度,将不会执行任何操作。第三个参数指定用于填充的字符串,这是一个可选参数。如果未指定,默认情况下将使用空格作为填充。最后一个参数指定填充的方向,它有三个可选值:STR_PAD_BOTH、STR_PAD_LEFT和STR_PAD_RIGHT,分别表示字符串两端、左右的填充。也是可选参数。如果未指定,默认值为STR_PAD_RIGHT。函数str_pad()的使用代码如下:复制代码如下:php $ str=' LAMPecho str_pad($str,10);//指定长度为10,默认填充右边的“lamp”echo str _ pad($ str,10,'-=' str _ pad _ left);//指定长度为10,在左边填充“-=-=-=lamp”echo str _ pad($ str,10,' _ ' str _ pad _ both);//指定长度为10,并在左边填入“__LAMP__”?
二、字符串大小写的转换
PHP中有四个字符串大小写转换函数,它们都只有一个可选参数,即要转换的字符串被传入。您可以直接使用这些函数来完成案例转换操作。函数strtoupper()用于将所有给定的字符串转换为大写字母;函数strtolower()用于将所有给定的字符串转换成小写字母;函数ucfirst()用于将给定字符串中的第一个字母转换为大写,其他字符保持不变;函数ucwords()用于将给定字符串中被空格分隔的所有单词的首字母转换为大写。以下程序是这些功能的使用代码,如下所示:复制代码如下:php$lamp='lamp由Linux、Apache、MySQL和php组成';echo strtolow($ lamp);//输出:lamp由linux、apache、MySQL和PHP echo strupper组成($ lamp);//输出:LAMP IS CONPOSED OF LINUX、APACHE、MYSQL和PHPecho UC first($ LAMP);//输出:Lamp由Linux、Apache、MySQL和PHPecho ucwords组成($ Lamp);//输出:灯是由Linux、Apache、MySQL和PHP组成的?这些功能只能按照其说明中描述的方式工作。为了确保字符串的第一个字母是大写的,其余的是小写的,您需要使用一致的方式。如下图:复制代码如下:php$lamp='lamp由Linux、Apache、MySQL和php组成';echo ucfirst(strtolow($ lamp));//输出:Lamp由linux、apache、mysql、php组成?
第三,格式化与HTML标签相关的字符串
HTML输入表单和URL上的附加资源是用户向服务器提交数据的方式。如果处理不好,可能会成为黑客攻击服务器的入口。比如用户发布一篇文章,如果文章中包含一些HTML格式的标签或者JavaScript翻页代码,如果直接输出显示,页面的布局就会发生变化。因为这些代码被发送到浏览器,所以浏览器会将它们解释为有效代码。因此,在PHP脚本中,必须首先处理用户提交的数据。我们在PHP中提供了非常全面的HTML相关的字符串格式化功能,可以有效的控制HTML文本的输出。
函数nl2br()
浏览器中的输出字符串“br”标记了一个新的行,但是很多人习惯使用“n”作为新的行符号,但是这个字符串的新行字符在浏览器中是无法识别的。即使有多行文本,在浏览器中显示时也只有一行。nl2br()函数在字符串中的每一个新行“n”之前插入HTML换行符“br/”。这个函数的用法如下:复制代码如下:phpecho nl2br('一行。 n另一行);//在“n”前添加“br/”/*输出以下两行结果:一行line.br/Another。*/?
函数htmlspecialchars()
如果不希望浏览器直接解析HTML标签,需要将HTML标签中的特殊字符转换为HTML实体。例如,将“”转换为“”并将“”转换为“”。这样,HTML标记浏览器就不会解析它,而是输出浏览器中的HTML文本。PHP中提供的htmlspecialchars()函数可以将一些预定义的字符串转换成HTML实体。此功能用于防止HTML标签包含在用户提供的文本中,如公告栏或访问者留言板。以下字符可以通过该函数转换:
“”(&符号)被转换为“”。" "(双引号)被转换为" "。“'”(单引号)被转换为“'”。" "(小于)被转换为" "。" "(大于)被转换为" "。
这个函数的原型如下:复制代码如下: string HTML specialchars(string[,int quote _ style [,string charset]])这个函数中的第一个参数是一个带有要处理的HTML标记的字符串。第二个参数用于确定如何转换引号。ENT_COMPAT的默认值只会转换双引号,保留单引号;ENT_QUOTES将转换两个报价;而ENT_NOQUOTES不会转换引号。第三个参数用于指定已处理字符串的字符集。默认字符集是“ISO88511-1”。
复制代码如下:htmlbody?PHP $ str=' bwebserver :/B ' Linux ' ' Apache ' ';//字符串用html标记和单引号回显HTMLspecialchars ($ str,ent _ compat);//转换HTML标记和双引号回显“br n”;echo htmlspecialchars($str,ENT _ QUOTES);//转换HTML标记和两个引号呼应“br n”;echo htmlspecialchars($str,ENT _ NOQUOTES);//转换HTML标记,不要将echo转换为引号' br n ';/body/html
浏览器中的输出结果复制如下: bwebserver 3360/b“Linux”“Apache”bwebserver 3360/b“Linux”“Apache”bwebserver 3360/b“Linux”“Apache”如果在浏览器中查看源代码,可以看到以下结果:复制的代码如下: html bodywebserver :/b“Linux”“Apache”br//bwebserver 3360不转换单引号/b
PHP中还提供了Htmlentities()函数,可以将所有非ASCII字符转换为对应的实体代码。该函数的语法格式与htmlspecialchars()函数相同,可以转义更多的HTML字符。下面的代码是使用htmlentities()函数的一个示例:按如下方式复制代码:Php$str=' a '引号'是粗体;//输出0qrave“quote”lt: bboldecho htmlentities($ str);//输出:一个' quote '是粗体echo html实体($ str,ent _ quotes,GB 2312);
在处理表单中提交的数据时,不仅要通过上述功能将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许用_ tags]);//删除HTML标签函数这个函数有两个参数。第一个参数提供要处理的字符串,第二个参数是可选的HTML标记列表。放置在此列表中的HTML标记将被保留,所有其他标记将被删除。默认情况下,所有的HTML标签都会被删除。下面的程序就是这个功能的使用范围,如下图:复制代码如下:PHP $ str=' font color=' red ' size=7 Linux/font iApache/I uMysql/u PHP ';echo strip _ tags($ str);//删除所有HTML标签,输出:Linux Apache MySQL PHP echo strip _ tags($ str,' font ');//输出字体color=' red ' size=7 Linux/font Apache MySQL PHP echo strip _ tags($ str,' ui ');//输出Linux iApache/i uMysql/u PHP?
第四,其他字符串格式化功能
有许多用于格式化字符串的处理函数。只要想得到要格式化的字符串,就可以调用PHP中提供的系统函数,很少需要定义自己的字符串格式化函数。
(1)函数strrev()
该函数反转输入字符串,只提供一个字符串作为参数进行处理,并返回反转后的字符串。如下图:复制代码如下:phpecho str ev(' http://www . lamp brother . net ');//反转后输出:ten.rehtorbpmal.www//:ptth?
函数number_format()
number_format()函数通过将数千分组来格式化数字。函数如下:复制代码如下:字符串number _ format(浮点数[,int decimals [,string dec _ point,string experiences _ sep]])
复制代码代码如下:php $ number=123456789echo number _ format($ number);//输出:123,456,789千字节分隔字符串echo number_format($number,2);//输出:123,456,789.00小数位,后跟echo number_format($number,2,',','.');//输出123.456.789,000位数字用(.)分隔。),保留两位小数?
函数md5()
随着互联网的普及,黑客已经成为网络管理者的心病。统计显示,70%的攻击来自内部,因此必须采取相应的防范措施来遏制系统内部的攻击。防止内部攻击的重要性还在于,内部人员非常清楚数据的存储位置和信息的重要性,这使得内部攻击更加有效。攻击者窃取合法用户的身份信息,并以假身份与他人交流。因此,用户注册时,应先对密码进行加密后再添加到数据库中,以防止内部攻击者直接查询数据库中的授权表,窃取合法用户的身份信息。
md5()函数使用MD5算法加密字符串,默认情况下返回32位十六进制字符串。
复制代码代码如下:php $ password=' lampbrotherecho MD5($密码)。br ';//将输入的密码与保存在数据库中的if进行匹配(MD5($ password)=' 5f1ba 7 d4bf 96 FB 8 e7ae 52 fc 6297 aee '){ echo '密码一致,登录成功';}?
在PHP中,提供了一个函数md5_file()来加密md5中的文件,类似于md5()函数。