php 字符串处理函数

一、字符串的处理

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表示的是要重复的次数。

 

你可能感兴趣的:(php)