购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.3 字符串操作

本节介绍字符串的常用处理函数,包括字符串的查找、替换、截取、去空格、转义等常用函数。

5.3.1 改变字符串大小写

可以使用以下函数来改变字符串的大小写:

·Ucfirst 将字符串的首字母转换为大写。

·Lcfirst 将字符串的首字母转换为小写。

·Ucwords 将字符串中每个单词的首字母转换为大写。

·Strtoupper 将字符串转化为大写。

·Strtolower 将字符串转化为小写。

示例如下:


     <?php
     $str = 'i love you' . "<br/>";
     echo ucfirst($str) . ucwords($str) . strtoupper($str);
     $str = 'I LOVE YOU'. "<br/>";
     echo strtolower($str) . lcfirst($str);
     ?>

以上程序的执行结果如下:


     I love you
     I Love You
     I LOVE YOU
     i love you
     i LOVE YOU

5.3.2 查找字符串

可以使用以下函数来查找字符串。

1.stripos:查找字符串中某部分字符串首次出现的位置(不区分大小写)

语法如下:


     int stripos ( string $haystack , string $needle [, int $offset = 0 ] )

参数说明如下:

·haystack

在该字符串中查找。

·needle

注意,needle可以是一个单字符或者多字符的字符串。

如果needle不是一个字符串,那么它将被转换为整型并被视为字符顺序值。

·offset

可选的offset参数允许你指定从haystack中的哪个字符开始查找,返回的位置数字值仍然相对于haystack的起始位置。

返回needle存在于haystack字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于0,而不是1。

如果未发现needle就将返回false。

示例如下:


     <?php
     $findme = 'c';
     $mystring1 = 'xyz';
     $mystring2 = 'ABC';
     $pos1 = stripos($mystring1, $findme);
     $pos2 = stripos($mystring2, $findme);
     var_dump($pos1);
     var_dump($pos2);
     ?>

执行结果为:


     bool(false) int(2)。

2.strpos:查找字符串首次出现的位置

语法如下:


     mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

说明: 和strrpos()、strripos()不一样,strpos的偏移量不能是负数。

示例如下:


     <?php
     $findme = 'c';
     $findme1 = 'C';
     $mystring = 'ABCabc';
     $pos1 = strpos($mystring, $findme);
     $pos2 = strpos($mystring, $findme1);
     var_dump($pos1);
     var_dump($pos2);
     ?>

上述代码的执行结果为:int(5)int(2)。

3.strripos:计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

语法如下:


     int strripos ( string $haystack , string $needle [, int $offset = 0 ] )

说明: 负数偏移量将使得查找从字符串的起始位置开始,到offset位置为止。

示例如下:


     <?php
     $findme = 'c';
     $findme1 = 'C';
     $mystring = 'ABCabcabcABC';
     $pos1 = strripos($mystring, $findme);
     $pos2 = strripos($mystring, $findme1);
     var_dump($pos1);
     var_dump($pos2);
     ?>

上述代码的执行结果为:int(11)int(11)。

4.strrpos:计算指定字符串在目标字符串中最后一次出现的位置

语法如下:


     int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

说明: 如果是负数的偏移量,将会导致查找在字符串结尾处开始的计数位置处结束。

示例如下:


     <?php
     $findme = 'c';
     $findme1 = 'C';
     $mystring = 'ABCabcabcABC';
     $pos1 = strrpos($mystring, $findme);
     $pos2 = strrpos($mystring, $findme1);
     $pos3 = strrpos($mystring, $findme1,-5);
     var_dump($pos1);
     var_dump($pos2);
     var_dump($pos3);
     ?>

上述代码的执行结果为:int(8)int(11)int(2)。

5.3.3 替换字符串

可以对一个字符串中的特定字符或子串进行替换,这是非常常用的功能。

1.str_ireplace()和str_replace()函数

str_ireplace()和str_replace使用新的字符串替换原来字符串中指定的特定字符串,str_replace区分大小写,str_ireplace()不区分大小写。两者语法相似,str_ireplace()的语法如下:


     mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

说明: 该函数返回一个字符串或者数组。该字符串或数组是将subject中全部的search用replace替换(忽略大小写)之后的结果。参数count表示执行替换的次数。

使用示例如下:


     <?php
     $str = 'hello,world,hello,world';
     $replace = 'hi';
     $search = 'hello';
     echo str_ireplace($search, $replace, $str);
     ?>

执行以上代码的输出结果为:


     hi,world,hi,world

2.substr_replace()函数

substr_replace()函数的语法如下:


     mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )

说明: substr_replace()在字符串string的副本中将由start和可选的length参数限定的子字符串使用replacement进行替换。如果start为正数,替换将从string的start位置开始。

如果start为负数,替换将从string的倒数第start个位置开始。如果设定了length参数并且为正数,就表示string中被替换的子字符串的长度。如果设定为负数,就表示待替换的子字符串结尾处距离string末端的字符个数。如果没有提供此参数,那么默认为strlen(string)(字符串的长度)。当然,如果length为0,那么这个函数的功能为将replacement插入string的start位置处。

该函数的使用示例如下:


     <?php
     $str = 'hello,world,hello,world';
     $replace = 'hi';
     echo substr_replace($str, $replace, 0,5);
     ?>

以上代码的执行结果为:


     hi,world,hello,world

5.3.4 截取字符串

PHP中使用substr截取字符串,其语法如下:


     string substr ( string $string , int $start [, int $length ] )

说明: 其作用是返回字符串string,由start和length参数指定的长度为length的子字符串。如果start是非负数,返回的字符串将从string的start位置开始,从0开始计算。如果start是负数,那么返回的字符串将从string结尾处向前数第start个字符开始。如果string的长度小于或等于start,就将返回false。

该函数的使用示例如下:


     <?php
     $rest = substr("abcdef", 1);    // 返回 "f"
     echo $rest . "<br/>";
     $rest = substr("abcdef", -2);    // 返回 "ef"
     echo $rest . "<br/>";
     $rest = substr("abcdef", -3, 1); // 返回 "d"
     echo $rest . "<br/>";
     ?>

以上代码的运行结果如下:


     bcdef
     ef
     d

5.3.5 去除字符串首尾空格和特殊字符

在PHP中,使用trim()函数可以去除字符串首尾两边的空格或特殊字符,使用ltrim()和rtrim()函数将可分别去除字符串左边和右边的空格或特殊字符。这3个函数的语法分别如下:


     string trim ( string $str [, string $character_mask ] )
     string ltrim ( string $str [, string $character_mask ] )
     string rtrim ( string $str [, string $character_mask ] )

这3个函数都是返回字符串str去除相应特定字符后的结果。$str是待处理的字符串,$character_mask是过滤字符串。如果不指定第2个参数,trim()将去除以下字符:

·"",普通空格符。

·"\t",制表符。

·"\n",换行符。

·"\r",回车符。

·"\0",空字节符。

·"\x0B",垂直制表符。

关于这3个函数的使用示例如下:


     <?php
     $text = "\t\tThese are a few words :) ...  ";
     $binary = "\x09Example string\x0A";
     $hello  = "Hello World";
     echo trim($text) . "<br/>";
     echo rtrim($text) . "<br/>";
     echo rtrim($text, " \t.") . "<br/>";
     echo ltrim($hello, "H") . "<br/>";
     // 删除 $binary 末端的 ASCII 码控制字符
     // (包括0~31)
     echo rtrim($binary, "\x00..\x1F") . "<br/>";
     ?>

以上代码的执行结果为:


     These are a few words :) ...
     These are a few words :) ...
     These are a few words :)
     ello World
     Example string

5.3.6 计算字符串的长度

PHP中使用strlen()函数返回字符串的长度,该函数的语法如下:


     int strlen ( string $string )

使用示例如下:


     <?php
     $str='abcdef';
     echo strlen($str); // 6
     $str='ab cd';
     echo strlen($str); // 7
     ?>

以上代码的执行结果为:


     67

5.3.7 转义和还原字符串

PHP中使用addslashes函数转义字符串。该函数的语法格式如下:


     string addslashes ( string $str )

说明: 该函数返回转义后的字符串,在一些特殊字符前加了转义符号“\”。这些字符是单引号(')、双引号(")、反斜线(\)与NUL(NULL字符)。

一个使用addslashes()的例子是往数据库中输入数据。例如,将名字O'reilly插入数据库中,就需要对其进行转义。强烈建议使用DBMS指定的转义函数(比如MySQL是mysqli_real_escape_string(),PostgreSQL是pg_escape_string()),但是如果你使用的DBMS没有一个转义函数,并且使用“\”来转义特殊字符,就可以使用这个函数。仅仅是为了获取插入数据库的数据,额外的“\”并不会插入。当PHP指令magic_quotes_sybase被设置成on时,意味着插入“'”时将使用“'”进行转义。

转义字符串的示例如下:


     <?php
     $str = "I don't love you";
     echo addslashes($str);
     ?>

执行以上程序的结果为:


     I don\'t love you

stripslashes可以还原经过addslashes转义后的字符串。示例如下:


     <?php
     $str = "I don't love you";
     $str1 = addslashes($str);
     echo $str1;
     echo stripslashes($str1);
     ?>

以上程序的执行结果为:


     I don\'t love youI don't love you

5.3.8 重复一个字符串

使用str_repeat()函数可以重复一个字符串,语法如下:


     string str_repeat ( string $input , int $multiplier )

说明: 该函数返回input重复multiplier次后的结果。multiplier必须大于等于0。如果multiplier被设置为0,那么函数将返回空字符串。

使用示例如下:


     <php
     echo str_repeat("-=",10);
     >

以上代码的执行结果为:


 -=-=-=-=-=-=-=-=-=-=

5.3.9 随机打乱字符串

可使用str_shuffle()函数来随机打乱一个字符串,其语法如下:


     string str_shuffle ( string $str )

说明: str_shuffle()函数打乱一个字符串,使用任何一种可能的排序方案。该函数的使用示例如下:


     <?php
     $str = 'abcdef';
     echo str_shuffle($str) . "<br/>";
     echo str_shuffle($str) . "<br/>";
     echo str_shuffle($str) . "<br/>";
     ?>

执行上述代码的结果为:


     ecfabd
     debcaf
     bcfeda

注意,每次使用str_shuffle()函数打乱字符串都是随机的。

5.3.10 分割字符串

可以使用explode()函数将一个字符串分割成另一个字符串,其语法如下:


     array explode ( string $delimiter , string $string [, int $limit ] )

说明: 此函数返回由字符串组成的数组,每个元素都是string的一个子串,它们被字符串delimiter作为边界点分割出来。delimiter表示边界上的分割字符,如果设置了limit参数并且是正数,那么返回的数组包含最多limit个元素,而最后那个元素将包含string的剩余部分。如果limit参数是负数,就返回除最后的-limit个元素外的所有元素。如果limit是0,就会被当作1。

该函数的使用示例如下:


     <?php
     $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
     $pieces = explode(" ", $pizza);
     print_r($pieces);
     $input = 'hello,world';
     print_r(explode(',', $input));
     ?>

上述代码的执行结果如下: kKWrYkWS915vInu7VoHb0J3Oz66m/U42SUvO9m3Nr6ZjY9gi5RObe4QKChI0RcNF


     Array ( [0] => piece1 [1] => piece2 [2] => piece3 [3] => piece4 [4] => piece5 [5] => piece6 )Array ( [0] => hello [1] => world )

点击中间区域
呼出菜单
上一章
目录
下一章
×