使用PHP相关函数对字符串格式化的方法

∥☆過路亽.° 提交于 2019-12-06 05:54:45

通常情况下,网站后台程序在使用用户输入的字符串(一般都是通过HTML表单提交)之前,都必须对这些字符串进行格式化处理,以便使其符合程序运行的标准,防止错误和漏洞的产生。在下面的内容中,将介绍一些可用的PHP函数来实现这过程。

字符串的整理

字符串整理的第一步是清理字符串中多余的空格或其他冗余的字符。当然如果不将字符串存入一个文件或数据库中,或者不将它和别的字符串进行比较,这一步骤不是必需的。因此,我们可以视情况而定,灵活的对其进行整理。

为了实现字符串整理功能,PHP提供了3个非常有用的函数。在接收用记提交字符串脚本的开始处,当我们要给表单输入变量定义简短变量名称时,可以使用trim()函数来整理用户输入的数据,具体用法如下所示:

$username=trim($_POST['username']);
$password=trim($_POST['password']);
$email=trim($_POST['email']);

trim()函数可以除去字符串开始位置和结束位置的空格,并将结果字符串返回。默认情况下,除去的字符是换行符和回车符(n和r)、水平和垂直制表符(t和x0B)、字符串结束符()和空格。除了这些默认的过滤字符串之外,也可以该函数的第二个参数中提供其他要过滤的特殊字符。根据特定用途,可能会使用到ltrim()和rtrim()函数。

这两个函数的功能都类似于trim()函数,它们都可以将需要处理的字符串作为输入的参数,然后返回经过格式化的字符串。不同之处在于:trim()函数将除去整个字符串前后的空格,ltrim()只从字符串的开始处(左边)去除空格,rtrim()只从字符串的结束处(右边)除去空格。

格式化字符串

PHP提供了一系列可以使用的函数来重新格式化字符串,这些函数的工作方式各不相同,可以在程序的多个地方使用,开发人员可以灵活的来使用它们。

1、nl2br()函数

nl2br()函数将字符串作为输入的参数,用XHTML中的<br />标记字符串的换行符。这对于将一很长的字符串显示在浏览器中是非常有利的。一般情况下,HTML会忽略纯空格,所以如果不使用nl2br()函数来过滤输出的结果,那么它看上去就是单独的一行(除非浏览器窗口进行了强制的换行)。

2、print()函数

通常我们都习惯使用echo语句将字符串输出,在PHP中也支持print()结构,它实现的功能与echo相同,唯一不同之处在于其具有返回值:true或false,表示输出成功或失败。除了print()还可以使用printf()和sprintf(),来实现一些复杂的格式。它们的工作方式基本相同,只是printf()将一个格式化的字符串输出到浏览器中,而sprintf()返回一个格式化了的字符串。

3、改变字符串中的字母大小写

有时候需要对输入的字母大小写进行格式化,PHP提供了一些函数可以实现改变字符串中的字母大小写这一功能,这些函数及其作用如下所示:

strtoupper():将字符串中的字母转换为大写、strtolower():将字符串中的字母转换成小写、ucfirst():如果字符串的第一个字符是字母,就将该字符转换成大写、ucwords() 将字符串每个单词的第一个字母转换为大写。

格式化字符串以便存储

对于字符中来说,某些字符肯定是有效的,但是当将数据插入到数据库中的时候可能会引起一些问题,因为数据库会将这些字符解释成控制符。这些有问题的字符就是引号(单引和双引)、反斜杠()和NULL字符。

PHP提供了两个专门用于转义字符串的函数。在将任何字符串写到数据库之前,如果你的PHP的默认配置还没有启用该功能,那么你就应该使用addslashes()将它们重新格式化,例如:

$post_content = addslashes(trim($_POST['post_content']));

和其他字符串格式化函数一样,addslashes()需要一个字符串作为转入参数,经过该函数处理,将返回一个重新格式化后的字符串。

自动添加或去除转义字符功能是由PHP的magic_quotes_gpc配置指令控制的。在PHP新版本的默认安装情况下,该指令是启用的。gpc表示GET、POST、COOKIE,是一个字母的组合。这就意味着,来自这些方法或方式的变量将被自动包括在引号内。使用get_magic_quotes_gpc()函数,可以检查系统中的这个指令是否已经启用。如果已经启用,在显示用户数据之前,必须调用stripslashes()函数;否则,转义字符会被显示出来。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!