去除字符串首尾空格和特殊字符
用户在输入数据时,经常会在无意中输入多余的空格,在有些情况下,字符串中不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。在PHP中提供了trim()函数去除字符串左右两边的空格和特殊字符、ltrim()函数去除字符串左边的空格和特殊字符、rtrim()函数去除字符串中右边的空格和特殊字符。
1.trim()函数
trim()函数用于去除字符串开始位置以及结束位置的空格,并返回去掉空格后的字符串。
语法格式如下:
string trim(string str [,string charlist]);
trim()函数的参数str是要操作的字符串对象,参数charlist为可选参数,指定需要从指定的字符串中删除哪些字符,如果不设置该参数,则所有的可选字符都将被删除。
trim()函数的参数charlist的可选值如下表所示。
参数值 |
说明 |
\0 |
NULL,空值 |
\t |
tab,制表符 |
\n |
换行符 |
\x0B |
垂直制表符 |
\r |
回车符 |
" " |
空格 |
注意:除了以上默认的过滤字符列表外,也可以在charlist参数中提供要过滤的特殊字符。
2.Itrim()函数
Itrim()函数用于去除字符串左边的空格或者指定字符串。
语法格式如下:
string ltrim( string str [,string charlist]);
转义、还原字符串数据
字符串转义、还原的方法有两种:一种是手动转义、还原字符串数据,另一种是自动转义、还原字符串数据。下面分别对这两种方法进行详细讲解。
1.手动转义、还原字符串数据
字符串可以用单引号(‘)、双引号(“”)、定界符({})3种方法定义。而指定一个简单字符串的最简单的方法是用单引号(‘)括起来。当使用字符串时,很可能在该串中存在这几种符号与PHP脚本混淆的字符,因此必须要做转义语句。这就要在它的前面使用转义符号“\”。
“\”是一个转义符,紧跟在“\”后面的第一个字符将变得没有意义或有特殊意义。如‘是字符串的定界符,写为\’时就失去了定界符的意义,变为了普通的单引号‘。读者可以通过echo ’\‘’;输出一个单引号‘,同时转义字符“\”也不会显示。
技巧1:如果要在字符串中表示单引号,则需要用反斜线(\)进行转义。例如,要表示字符串“I‘m”,则需要写成“I\’m”。
技巧2 :对于简单的字符串建议采用手动方法进行字符串转义,而对于数据量较大的字符串,建议采用自动转义函数实现字符串的转义。
说明:手动转义字符串可应用addcslashes()函数进行字符串还原,其具体的实现方法将在下面进行介绍。
2.自动转义、还原字符串数据
自动转义、还原字符串数据可以应用PHP提供的addslashes()函数和stripslashes()函数实现。
1.addslashes()函数
addslashes()函数用来为字符串str加入斜线“\”。
语法格式如下:
string addslashes (string str)
2.stripslashes()函数
stripslashes()函数用来将使用addslashes()函数转义后的字符串str返回原样。
语法格式如下:
string stripslashes(string str);
技巧:所有数据在插入数据库之前,有必要应用addslashes()函数进行字符串转义,以免特殊字符未经转义在插入数据库时出现错误。另外,对于使用addslashes()函数实现的自动转义字符串可以使用stripcslashes()函数进行还原,但数据在插入数据库之前必须再次进行转义。
以上两个函数实现了对指定字符串进行自动转义和还原。除了上面介绍的方法外,还可以对要转义、还原的字符串进行一定范围的限制,通过使用addcslashes()函数和stripcslashes()函数实现对指定范围内的字符串进行自动转义、还原。下面分别对两个函数进行详细介绍。
3.addcslashes()函数
实现转义字符串中的字符,即在指定的字符charlist前加上反斜线。
语法格式如下:
string addcslashes (string str, string charlist)
参数说明:
参数str为将要被操作的字符串,参数charlist指定在字符串中的哪些字符前加上反斜线“\”,如果参数charlist中包含\n、\r等字符,将以C语言风格转换,而其他非字母数字且ASCII码低于32以及高于126的字符均转换成八进制表示。
注意:在定义参数charlist的范围时,需要明确在开始和结束的范围内的字符。
4.stripcslashes()函数
stripcslashes()函数用来将应用addcslashes()函数转义的字符串str还原。
语法格式如下:
string stripcslashes (string str)
获取字符串的长度使用的是strlen()函数,下面重点讲解strlen()函数的语法及其应用。
strlen()函数主要用于获取指定字符串str的长度。
语法格式如下:
int strlen(string str)
strlen()函数在获取字符串长度的同时,也可以用来检测字符串的长度。
比较字符串——按字节进行字符串的比较
1.按字节进行字符串的比较
按字节进行字符串比较的方法有两种,分别是strcmp()和strcasecmp()函数,通过这两个函数即可实现对字符串进行按字节的比较。这两种函数的区别是strcmp()函数区分字符的大小写,而strcasecmp()函数不区分字符的大小写。
strcmp()函数的语法格式如下:
int strcmp ( string str1, string str2)
参数str1和参数str2指定要比较的两个字符串。如果相等则返回0;如果参数str1大于参数str2则返回值大于0;如果参数str1小于参数str2则返回值小于0。
2.按自然排序法进行字符串的比较
在PHP中,按照自然排序法进行字符串的比较是通过strnatcmp()函数来实现的。自然排序法比较的是字符串中的数字部分,将字符串中的数字按照大小进行排序。
语法格式如下:
int strnatcmp ( string str1, string str2)
如果字符串相等则返回0,如果参数str1大于参数str2则返回值大于0;如果参数str1小于参数str2则返回值小于0。本函数区分字母大小写。
注意:在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为“10”中的第一个数字是“1”,它小于2。
检索字符串
1.使用strstr()函数查找指定的关键字
获取一个指定字符串在另一个字符串中首次出现的位置到后者末尾的子字符串。如果执行成功,则返回剩余字符串(存在相匹配的字符);如果没有找到相匹配的字符,则返回false。
语法格式如下:
string strstr ( string haystack, string needle)
参数说明:
haystack必要参数,指定从哪个字符串中进行搜索needle必要参数,指定搜索的对象。如果该参数是一个数值,那么将搜索与这个数值的ASCII值相匹配的字符
2.使用substr_count()函数检索子串出现的次数获取指定字符在字符串中出现的次数。
语法格式如下:
int substr_count(string haystack,string needle)参数haystack是指定的字符串,参数needle为指定的字符.
替换字符串
通过字符串的替换技术可以实现对指定字符串中的指定字符进行替换。字符串的替换技术可以通过以下两个函数实现:str_ireplace()函数和substr_replace()函数。
1.str_ireplace()函数
使用新的子字符串(子串)替换原始字符串中被指定要替换的字符串语法格式如下:
mixed str_ireplace ( mixed search, mixed replace, mixed
subject [, int &count])
将所有在参数subject中出现的参数search以参数replace取代,参数&count表示取代字符串执行的次数。本函数区分大小写。参数说明:search必要参数,指定需要查找的字符串;replace必要参数,指定替换的值;subject必要参数,指定查找的范围;count可选参数,获取执行替换的数量
格式化字符串
在PHP中,字符串的格式化方式有多种,按照格式化的类型可以分为字符串的格式化和数字的格式化,数字的格式化最为常用,本节将重点讲解数字格式化number_format()函数。number_format()函数用来将数字字符串格式化。
语法格式如下:
string number_format(float number,[int
num_decimal_places],[string dec_seperator],string
thousands_ seperator)
number_format()函数可以有一个、两个或是4个参数,但不能是3个参数。如果只有一个参数number,number格式化后会舍去小数点后的值,且每一千就会以逗号(,)来隔开;如果有两个参数,number格式化后会到小数点第num_decimal_places位,且每一千就会以逗号来隔开;如果有4个参数number格式化后会到小数点第num_decimal_places位,dec_seperator用来替代小数点(.),thousands_seperator用来替代每一千隔开的逗号(,)
分割字符串
字符串的分割是通过explode()函数实现的。explode()函数按照指定的规则对一个字符串进行分割,返回值为数组。
语法格式如下:
array explode(string separator,string str,[int limit])
合成字符串
implode()函数可以将数组的内容组合成一个新字符串。
语法格式如下:
string implode(string glue, array pieces)
参数说明:
参数glue是字符串类型,指定分隔符;参数pieces是数组类型,指定要被合并的数组
gettype: | 取得变量的类型。 |
intval: | 变量转成整数类型。 |
doubleval: | 变量转成倍浮点数类型。 |
empty: | 判断变量是否已配置。 |
is_array: | 判断变量类型是否为数组类型。 |
is_double: | 判断变量类型是否为倍浮点数类型。 |
is_float: | 判断变量类型是否为浮点数类型。 |
is_int: | 判断变量类型是否为整数类型。 |
is_integer: | 判断变量类型是否为长整数类型。 |
is_long: | 判断变量类型是否为长整数类型。 |
is_object: | 判断变量类型是否为类类型。 |
is_real: | 判断变量类型是否为实数类型。 |
is_string: | 判断变量类型是否为字符串类型。 |
isset: | 判断变量是否已配置。 |
settype: | 配置变量类型。 |
strval: | 将变量转成字符串类型。 |
unset: | 删除变量。 |