一、字符串的处理
1.使用多参数来输出多个字符串的输出结果与使用字符串连接符“.”的结果完全相同。以下代码是一个使用echo输出多个参数的例子。
echo “test” , “it” ,” “/n” ;
echo “test” . “it” . “/n” ;
?>
上面的例子输出了两行”test it”。
echo与print基本上与print相同,但是有以下两点区别:
使用print函数形式返回仁政为1,echo没有返回值。
echo支持多参数,print不支持
2.在PHP中,使用sprintf函数对字符串进行格式化操作,语法格式如下所示:
string sprintf ( string format [ , str1 ] , [, str2 ] … )
这里,format是要输出的字符串格式,str1、str2等是要格式化输出的其他字符串。format字符串中的格式由一般的字符和一些以”%”开头的字符构成,这些以“%”开头的字符用来指代后面的参数。这些字符包括以下几种:
%b: 参数将被认为是整型数,并且以二进制形式输出。
%c: 参数将被认为是整型数,并且以ASC2码形式输出。
%d: 参数将被认为是整型数,并且以有符号数形式输出。
%u: 参数将被认为是整型数,并且以无符号形式输出。
%o: 参数将被认为是整型数,并且以八进制形式输出。
%x: 参数将被认为是整型数,并且以十六进制输出,其中的字母为小写形式。
%X: 参数将被认为是整型数,并且以十六进制输出,其中的字母为大写形式。
%f: 参数将被认为是浮点数。
%s: 参数将被认为是字符串。
3.需要注意的是,如果只是为了输出格式化的字符串,可以用printf进行,语法与sprintf相同。不同的是printf可以将格式化后的字符串输出。
二、字符串常用的函数
1. 转义和还原字符串
<1> 在PHP编程的过程中经常会遇到这样的问题,将数据插入到数据库中时可能会引起一些问题,比如出现错误或乱码等,这是因为数据库将会话的数据中的字符解释成控制符。
addslashes ( ) 函数用来给字符串str加反斜杠 “ \ ”,然后对指定字符串中的字符进行转义。它可以转义的字符包括单引号 “ ‘ ”、双引号 “ “ ”、反斜杠 “ \ ”、NULL字符串 “ 0 ”。语法如下:
string addslashes ( string str )
提示:
addslashes ( ) 函数常用的地方就是在生成SQL语句时,对SQL语句中的部分字符进行转义。
stripslasthes ( ) 函数可以将addslashes ( ) 函数转义后的字符串str还原。stripslasthes ( )函数的语法如下:
string stripslashes ( string str ) ;
技巧:
所有数据在插入数据库之前,有必要应用addslasth ( ) 函数进行字符串转义,以免特殊字符在插入数据库的时候出现错误。另外,对于应用addslashes ( ) 函数实现的自动转义字符串,可以应用stripslashes ( ) 函数进行还原,但数据在插入数据库之前必须再次进行转义。
<2> 控制转义、还原字符串的范围:
使用addcslashes ( ) 函数和stripcslashes ( ) 函数可以对指定范围内的字符串进行转义和还原。
(1)addcslashes ( ) 函数用于实现对指定字符串中的字符进行转义,即在指定的字
符charlist前加上反斜线。通过该函数可以将要添加到数据库中的字符串进行转义,从而避免出现乱码等问题。语法如下:
string addcslashes ( string str , string charlist )
参数str为将要被操作的字符串,参数charlist指定在字符串中的哪些字符前加上反斜线“ \ ” 。如果参数charlist中包含有 “ \n ” 和 “ \r ” 等字符,将以C语言风格转换,而其他非字母数字且ASCII码低于32位以及高于126位的字符均转换成使用八进制表示。
(2)stripcslashes ( ) 函数用于实现对addslashes ( ) 函数转义的字符串str进行还原。语
法如下:
string stripcslashes ( string str )
2. 替换字符串
str_replace( )函数的语法格式如下所示:
str_replace ( search , replace , subject , [ , int &count ] )
这里,subject是要进行替换的字符串,search是查找内容,replace是要替换成的内容,&count是一个变量,用来接收替换的次数。
str_ireplace函数在用法上与str_replace完全相同,可以看作大小写不敏感的str_replace。
substr_replace( )函数用于对指定字符串的部分字符串进行替换;语法如下:
string substr_replace ( string str , string repl , int start , [ int length ] )
str参数指定要操作的原始字符串。
repl参数指定替换后的新字符串。
start指定替换字符串开始的位置。正数表示起始位置从字符串开头开始;负数表示起始位置从字符串的结尾开始;0表示起始位置从字符串中的第一个字符开始。
length是可选参数,指定替换的字符串长度,默认值是整个字符串。正数表示起始位置从字符串开头开始;负数表示起始位置从字符串的结尾开始;0表示“插入”而非“替代”。
注意:
如果参数,start设置为负数,而参数length的数值小于或者等于start的数值,那么length的值自动为0。
3. 分解、分割和合成字符串
字符串的分解使用str_split( )函数,返回值为数组;其语法格式如下所示:
array str_split ( string str [ , int split_lenght ] )
这里,str是要进行分解的字符串,split_length是分解的长度,也就是每小段有多长。如果不指定split_lenght,那么就默认为1,也就是函数会将字符串分解成一个个单一字符。
字符串的分割使用explode( ),它按照指定的规则对一个字符串进行分割,返回值为数值;其语法格式如下:
array explode ( string separator , string str , [ int limit ] )
separator是必要参数,用于指定分割符。如果separator为空字符( “” ),explode ( )函数将返回false。如果separator所包含的值在str中找不到,那么explode( )函数将返回包含str单个元素的数组。
str是必要参数,用于指定将要被分割的字符串。
limit是可选参数,如果设置了limit参数,则返回的数组中最多包含limit个元素,而最后的元素将包含string的剩余部分。如果limit参数是负数,则返回除了最后的limit个元素外的所有元素。
字符串的合成使用implode( ),它将数组中的元素组合成一个新字符串。语法如下:
string implode ( string glue , array pieces )
参数glue是字符串类型,用于指定分隔符;参数pieces用于指定要被合并的数组。
4. 截取字符串
string substr ( string str , int start [ , int length] )
这里,str是要进行截取的字符串;start是开始的字符位置;length是要截取的长度;需要注意的是字符串的第一个字符的位置为0。
需要注意的是:
如果使用一个正数作为子串起点来调用这个函数,将得到从起点到字符串结束的字符串;如果使用一个负数作为子串起点来调用,将得到一个原字符串尾部的一个子串,字符个数等于给定负数的绝对值。
如果参数start为负数,则从字符串的末尾开始截取。参数length为可选项,如果不指定length,则默认为截取到字符串末尾,如果length为负数,则表示取到倒数第length个字符。
5. 检索字符串
strstr函数的语法格式如下所示:
string strstr ( string str , string search )
这里,str是要进行查找的字符串,search是要查找的内容。这个函数返回自找到的第一个完全匹配的位置以后的全部内容。
知识扩展:
strstr( )函数区分大小写,如果不需要对大小写加以区分,可以使用stristr( )函数。
strstr函数从指定字符在另一个字符串中首次出现的位置开始查找,如果想从指定字符在另一个字符串中最后一次出现的位置开始查找,则可以使用strchr( )函数。strchr( )函数区分大小写。
strpos( )函数查找指定字符串(A)在另一个字符串(B)中首次出现的位置。该函数不区分大小写,如果要区分大小写,可以使用stripos( )函数。
strrpos( )函数查找指定字符串(A)在另一个字符串(B)中最后一次出现的位置。该函数区分大小写,如果要不区分大小写,可以使用strripos( )函数。
substr_count( )函数用于获取子串在字符串中出现的次数;语法格式如下:
int substr_count ( string haystack , string needle )
参数haystack是指定的字符串,参数needle是指定的子串。
6. 字符串与HTML转换
字符串与HTML之间的转换可以直接将源代码在网页中输出,而不被执行。这个操作应用最多的地方就是在论坛或者博客的帖子输出中,通过转换直接将我们提交的源代码输出,而确保源代码不被解析。这个操作主要由htmlentities( )函数。
htmlentities( )函数将所有的字符都转换成HMTL字符串,语法如下:
string htmlentities ( string string , [ int quote_style ] , [ string charset ] )
string是必要参数,指定要转换的字符串。
quote_style是可选参数,选择如何处理字符串中的引号,有3个可选值。(1)ENT_COMPAT,转换双引号,忽略单引号,它是默认值。(2)ENT_NOQUOTES,忽略双引号和单引号。(3)ENT_QUOTES,转换双引号和单引号。
charset是可选参数,确定转换所使用的字符集,默认字符集是“ISO - 8859 -1”,指定字符集后就能够避免转换中文字符出现乱码的问题。
htmlentities( )函数支持的字符集
字符集 说明
BIG5 繁体中文
BIG5-HKSCS 扩展的BIG5,繁体中文
cp866 DOS特有的西里尔( Cyrillic )字符集
cp1251 Windows特有的西里尔字符集
cp1252 Windows特有的西欧字符集
EUC-JP 日文
GB2312 简体中文
ISO-8859-1 西欧,Latin-1
ISO-8859-15 西欧,Latin-9
KOI8-R 俄语
Shift-JIS 日文
UTF-8 ASCII兼容的多字节8编码
7. 去除字符串中的空白字符和特殊字符
ltrim( )函数用于去除字符串左边的空白字符或者指定字符串。语法如下:
string ltrim ( string str [ , string charlist ] ) ;
参数str是要操作的字符串对象,参数charlist为可选参数,指定需要从指定的字符串中删除哪些字符,如果不设置该参数,则所有的可选字符都将被删除。参数的可选值如下:
\0 NULL,空值
\t tab,制表符
\n 换行符
\x0B 垂直制表符
\r 回车符
“ ” 空白字符
rtrim( )函数用于去除字符串右边的空白字符和特殊字符。语法如下:
string ltrim ( string str [ , string charlist ] ) ;
trim( )函数用于去除字符串开始位置和结束位置的空白字符,并返回去掉空白字符后的字符串。语法如下:
string trim ( str [ , string charlist ] ) ;
8. strlen函数用来获得字符串的长度,其语法格式如下所示:
int strlen ( string str )
这里,str是要进行长度计算的字符串。值得注意的是,这个函数不同于C语言中的字符串长度计算函数会把结束符考虑在内。这个函数计算的是字符串中真正出现的字符长度(包括首尾空格)。
9. str_word_count ( string str [ , int format ] )
这里,str是要进行分解或者计算的字符串,format包括以下两种:
返回一个包含str中全部单词的数组,数组的键值按照顺序排列。
返回一个包含str中全部单词的数组,数组的键值反映了单词所丰的位置。
如果未包含format,则返回一个数。
PHP针对字符串重复的函数——str_repeat( )函数,其语法格式如下所示:
string str_repeat ( string input , int multiplier )
这里input参数表示的是要重复的字符串,multiplier表示的是要重复的次数。