PHP从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

5.2 字符串操作

字符串的操作在PHP编程中占有重要的地位,几乎所有PHP脚本的输入与输出都会用到字符串。尤其是在PHP项目开发过程中,为了实现某项功能,经常需要对某些字符串进行特殊处理,如获取字符串的长度、截取字符串、替换字符串等。在本节中将对PHP常用的字符串操作技术进行详细的讲解,并通过具体的实例加深对字符串函数的理解。

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

用户在输入数据时,经常会在无意中输入多余的空格,有些情况下,字符串中不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。在PHP中提供了trim()函数去除字符串左右两边的空格和特殊字符,ltrim()函数去除字符串左边的空格和特殊字符,rtrim()函数去除字符串中右边的空格和特殊字符。

1.trim()函数

trim()函数用于去除字符串首尾处的空白字符(或者其他字符)。

语法格式如下:

    string trim(string str [,string charlist]);

其中,str是要操作的字符串对象;charlist为可选参数,一般要列出所有希望过滤的字符,也可以使用“..”列出一个字符范围。如果不设置该参数,则所有的可选字符都将被删除。如果不指定charlist参数,trim()函数将去除表5.1中的字符。

表5.1 不指定charlist参数时trim()函数去除的字符

注意

除了以上默认的过滤字符列表外,也可以在charlist参数中提供要过滤的特殊字符。

【例5.1】使用trim()函数去除字符串左右两边的空格及特殊字符“\r\r(: :)”,实例代码如下:(实例位置:资源包\TM\sl\5\1

    <?php
       $str="\r\r(:@_@ 创图书编撰伟业 展软件开发雄风 @_@:) ";
       echo trim($str);              //去除字符串左右两边的空格
       echo "<br>";                  //执行换行
       echo trim($str,"\r\r(: :)");  //去除字符串左右两边的特殊字符“\r\r(: :)”
    ?>

结果为:(:@_@ 创图书编撰伟业 展软件开发雄风 @_@:)

@_@ 创图书编撰伟业 展软件开发雄风 @_@

2.Itrim()函数

ltrim()函数用于去除字符串左边的空格或者指定字符串。

语法格式如下:

    string ltrim( string str [,string charlist]);

【例5.2】使用ltrim()函数去除字符串左边的空格及特殊字符“(:@_@”,实例代码如下:(实例位置:资源包\TM\sl\5\2

    <?php
       $str="  (:@_@  创图书编撰伟业  @_@:)   ";
       echo ltrim($str);           //去除字符串左边的空格
       echo "<br>";                //执行换行
       echo ltrim($str," (:@_@ "); //去除字符串左边的特殊字符“(:@_@”
    ?>

结果为:(:@_@ 创图书编撰伟业 @_@:)

创图书编撰伟业 @_@:)

3.rtrim()函数

rtrim()函数用于去除字符串右边的空格或者指定字符串。

语法格式如下:

    string rtrim(string str [,string charlist]);

【例5.3】使用rtrim()函数去除字符串右边的空格及特殊字符“@_@:)”,实例代码如下:(实例位置:资源包\TM\sl\5\3

    <?php
       $str="  (:@_@  展软件开发雄风  @_@:)   ";
       echo rtrim($str);             //去除字符串右边的空格
       echo "<br>";                  //执行换行
       echo rtrim($str," @_@:)");    //去除字符串右边的特殊字符“@_@:)”
    ?>

结果为:(:@_@展软件开发雄风 @_@:)

(:@_@展软件开发雄风

5.2.2 转义、还原字符串数据

字符串转义、还原的方法有两种:一种是手动转义、还原字符串数据,另一种是自动转义、还原字符串数据。下面分别对这两种方法进行详细讲解。

1.手动转义、还原字符串数据

字符串可以用单引号(')、双引号(")、定界符(<<<)3种方法定义,而指定一个简单字符串的最简单的方法是用单引号括起来。当使用字符串时,很可能在该字符串中存在这几种符号与PHP脚本混淆的字符,因此必须要做转义语句。这就要在它的前面使用转义符号“\”。

“\”是一个转义符,紧跟在“\”后面的第一个字符将变得没有意义或有特殊意义。如“'”是用来定义字符串,但写为“\'”时就失去了定义字符串的意义,变为普通的单引号。读者可以通过“echo '\'';”输出一个单引号,同时转义字符“\”不会显示。

技巧

如果要在字符串中表示单引号,则需要用反斜线(\)进行转义。例如,要表示字符串“I'm”,则需要写成“I\'m”。

【例5.4】使用转义字符“\”对字符串进行转义,实例代码如下:(实例位置:资源包\TM\sl\5\4

    <?php
       echo ' select * from tb_book where bookname = \'PHP5从入门到精通\' ';
    ?>

结果为:select * from tb_book where bookname = 'PHP5从入门到精通'

技巧

对于简单的字符串建议采用手动方法进行字符串转义,而对于数据量较大的字符串,建议采用自动转义函数实现字符串的转义。

2.自动转义、还原字符串数据

自动转义、还原字符串数据可以应用PHP提供的addslashes()函数和stripslashes()函数实现。

 addslashes()函数

addslashes()函数的作用是使用反斜线引用字符串。

语法格式如下:

    string addslashes ( string str)

其中,str为要转义的字符串。

返回值:返回转义后的字符。

返回字符串中,为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与NULL(NULL字符)。

 stripslashes()函数

stripslashes()函数的作用是反引用一个引用字符串。

语法格式如下:

    string stripslashes(string str);

其中,str为输入字符串。

返回值:返回一个去除转义反斜线后的字符串(“\'”转换为“'”等)。双反斜线(\\)被转换为单个反斜线(\)。

【例5.5】使用自动转义字符addslashes()函数对字符串进行转义,然后使用stripslashes()函数进行还原,实例代码如下:(实例位置:资源包\TM\sl\5\5

    <?php
     $str = "select * from tb_book where bookname = 'PHP5从入门到精通'";
     echo $str."<br>";                                  //输出字符串
     $a = addslashes($str);                             //对字符串中的特殊字符进行转义
     echo $a."<br>";                                    //输出转义后的字符
     $b = stripslashes($a);                             //对转义后的字符进行还原
     echo $b."<br>";                                    //将字符原义输出
    ?>

运行结果如图5.1所示。

图5.1 对字符串进行转义和还原

技巧

所有数据在插入数据库之前,有必要应用addslashes()函数进行字符串转义,以免特殊字符未经转义在插入数据库时出现错误。另外,对于使用addslashes()函数实现的自动转义字符串可以使用stripslashes()函数进行还原,但数据在插入数据库之前必须再次进行转义。

以上两个函数实现了对指定字符串进行自动转义和还原。除了上面介绍的方法外,还可以对要转义、还原的字符串进行一定范围的限制,通过使用addcslashes()函数和stripcslashes()函数实现对指定范围内的字符串进行自动转义、还原。下面分别对这两个函数进行详细介绍。

 addcslashes()函数

实现转义字符串中的字符,即在指定的字符charlist前加上反斜线。

语法格式如下:

    string addcslashes (string str, string charlist)

其中,str为将要被操作的字符串;charlist指定在字符串中的哪些字符前加上反斜线,如果参数charlist中包含\n、\r等字符,将以C语言风格转换,而其他非字母数字且ASCII码低于32以及高于126的字符均转换成八进制表示。

注意

在定义参数charlist的范围时,需要明确在开始和结束的范围内的字符。

 stripcslashes()函数

stripcslashes()函数用来将应用addcslashes()函数转义的字符串str还原。

语法格式如下:

    string stripcslashes (string str)

【例5.6】使用addcslashes()函数对字符串“编程词典网”进行转义,使用stripcslashes()函数对转义的字符串进行还原,实例代码如下:(实例位置:资源包\TM\sl\5\6

    <?php
       $a="编程词典网";                  //对指定范围内的字符进行转义
       echo $a;                          //输出指定的字符串
       echo "<br>";                      //执行换行
       $b=addcslashes($a,"编程词典网");  //转义指定的字符串
       echo $b;                          //输出转义后的字符串
       echo "<br>";                      //执行换行
       $c=stripcslashes($b);             //对转义的字符串进行还原
       echo $c;                          //输出还原后的转义字符串
    ?>

结果为:编程词典网

\261\340\263\314\264\312\265\344\315\370

编程词典网

技巧

在缓存文件中,一般对缓存数据的值采用addcslashes()函数进行指定范围的转义。

5.2.3 获取字符串的长度

获取字符串的长度使用的是strlen()函数,下面重点讲解该函数的语法及其应用。

strlen()函数主要用于获取指定字符串str的长度。

语法格式如下:

    int strlen(string str)

【例5.7】使用strlen()函数来获取指定字符串的长度,实例代码如下:(实例位置:资源包\TM\sl\5\7

    <?php
    echo strlen("编程词典网:www.mrbccd.com");      //输出指定字符串的长度
    ?>

结果为:25

说明

汉字占两个字符,数字、英文、小数点、下画线和空格占一个字符。

strlen()函数在获取字符串长度的同时,也可以用来检测字符串的长度。

【例5.8】使用strlen()函数对提交的用户密码的长度进行检测,如果其长度小于6,则弹出提示信息。(实例位置:资源包\TM\sl\5\8

具体开发步骤如下:

(1)利用开发工具(如Dreamweaver)新建一个PHP动态页,并将其保存为index.php。

(2)添加一个表单,将表单的action属性设置为index_ok.php。

(3)应用HTML标记设计页面,添加一个“用户名”文本框,命名为user;添加一个“密码”文本框,命名为pwd;添加一个图像域,指定源文件位置为images/btn_dl.jpg。

(4)新建一个PHP动态页,保存为index_ok.php,其代码如下:

    <?php
    if(strlen($_POST['pwd'])<6){                   //检测用户密码的长度是否小于6
        echo "<script>alert('用户密码的长度不得少于6位!请重新输入'); history.back();</script>";
    }
    else{
        echo "用户信息输入合法!";                 //用户密码超过6位,则弹出该提示信息
    }
    ?>

在上面的代码中,通过POST方法(关于POST方法将在后面的章节中进行详细讲解)接收用户输入的用户密码字符串的值。通过strlen()函数来获取用户密码的长度,并使用if条件语句对用户密码长度进行判断,如果用户输入的密码没有达到这个长度,就会弹出提示信息。

(5)在IE浏览器中输入地址,按Enter键,运行结果如图5.2所示。

图5.2 使用strlen()函数检测字符串的长度

5.2.4 截取字符串

在PHP中有一项非常重要的技术,就是截取指定字符串中指定长度的字符。PHP对字符串截取可以采用预定义函数substr()实现。本节重点介绍字符串的截取技术。

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

语法格式如下:substr()函数的参数说明如表5.2所示。

表5.2 substr()函数的参数说明

注意

substr()函数中参数start的指定位置是从0开始计算的,即字符串中的第一个字符表示为0。

【例5.9】使用substr()函数截取字符串中指定长度的字符,实例代码如下:(实例位置:资源包\TM\ sl\5\9

    <?php
       echo substr("She is a well-read girl",0);       //从第1个字符开始截取
       echo "<br>";                                    //执行换行
       echo substr("She is a well-read girl",4,14);    //从第5个字符开始连续截取14个字符
       echo "<br>";                                    //执行换行
       echo substr("She is a well-read girl",-4,4);    //从倒数第4个字符开始截取4个字符
       echo "<br>";                                    //执行换行
       echo substr("She is a well-read girl",0,-4);    //从第1个字符开始截取,截取到倒数第4个字符
    ?>

结果为:She is a well-read girl

is a well-read

girl

She is a well-read

在开发Web程序时,为了保持整个页面的合理布局,经常需要对一些超长文本进行部分显示。下面通过具体的实例讲解其实现方法。

【例5.10】使用substr()函数截取超长文本的部分字符串,剩余的部分用“……”代替,实例代码如下:(实例位置:资源包\TM\sl\5\10

    <?php
       $text="祝全国程序开发人员在编程之路上一帆风顺二龙腾飞三阳开泰四季平安五福临门六六大顺七星高照
       八方来财九九同心十全十美百事可乐千事顺心万事吉祥PHP编程一级棒";
       if(strlen($text)>30){                                //如果文本的字符串长度大于30
           echo substr($text,0,30)."……";                  //输出文本的前30个字节,然后输出省略号
       }
       else{                                                //如果文本的字符串长度小于30
           echo $text;                                      //直接输出文本
       }
    ?>

结果为:祝全国程序开发人员在编程之路上……

技巧

从指定的字符串中按照指定的位置截取一定长度的字符。通过substr()函数可以获取某个固定格式字符串中的一部分。

5.2.5 比较字符串

在PHP中,对字符串之间进行比较的方法主要有3种,第一种是使用strcmp()函数按照字节进行比较,第二种是使用strnatcmp()函数按照自然排序法进行比较,第三种是使用strncmp()函数指定从源字符串的位置开始比较。下面分别对这3种方法进行详细讲解。

1.按字节进行字符串的比较

按字节进行字符串比较的方法有两种,分别是strcmp()和strcasecmp()函数,通过这两个函数即可实现对字符串进行按字节的比较。这两种函数的区别是strcmp()函数区分字符的大小写,而strcasecmp()函数不区分字符的大小写。由于这两个函数的实现方法基本相同,这里只介绍strcmp()函数。

strcmp()函数用来对两个字符串进行比较。

语法格式如下:

    int strcmp ( string str1, string str2)

其中,str1和str2指定要比较的两个字符串。如果str1和str2相等,则返回0;如果str1大于str2,则返回值大于0;如果str1小于str2,则返回值小于0。

注意

strcmp()函数区分字母大小写。

【例5.11】使用strcmp()函数和strcasecmp()函数分别对两个字符串按字节进行比较,实例代码如下:(实例位置:资源包\TM\sl\5\11

    <?php
    $str1="明日编程词典!";         //定义字符串常量
    $str2="明日编程词典!";         //定义字符串常量
    $str3="mrsoft";                //定义字符串常量
    $str4="MRSOFT";                //定义字符串常量
    echo strcmp($str1,$str2);      //这两个字符串相等
    echo strcmp($str3,$str4);      //注意该函数区分大小写
    echo strcasecmp($str3,$str4);  //该函数不区分字母大小写
    ?>

结果为:010

技巧

在PHP中,对字符串之间进行比较的应用也是非常广泛的。例如,使用strcmp()函数比较在用户登录系统中输入的用户名和密码是否正确。如果在验证用户名和密码时不使用此函数,那么输入的用户名和密码无论是大写还是小写,只要正确即可登录。使用strcmp()函数可避免这种情况,即使正确,也必须大小写匹配才可以登录,从而提高了网站的安全性。

2.按自然排序法进行字符串的比较

在PHP中,按照自然排序法进行字符串的比较是通过strnatcmp()函数来实现的。将字符串中的字符按照从左到右的顺序进行比较。如果是数字与数字比较,则按照自然排序法,其他情况则根据字符的ASCII码值进行比较。

语法格式如下:

    int strnatcmp ( string str1, string str2)

如果字符串str1和str2相等,则返回0;如果str1大于str2,则返回值大于0;如果str1小于str2,则返回值小于0。strnatcmp()函数区分字母大小写。

注意

在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为“10”中的第一个数字是“1”,它小于2。

【例5.12】使用strnatcmp()函数按自然排序法进行字符串的比较,实例代码如下:(实例位置:资源包\TM\sl\5\12

    <?php
        $str1="str2.jpg";             //定义字符串常量
        $str2="str10.jpg";            //定义字符串常量
        $str3="mrsoft1";              //定义字符串常量
        $str4="MRSOFT2";              //定义字符串常量
        echo strcmp($str1,$str2);     //按字节进行比较,返回1
        echo " ";
        echo strcmp($str3,$str4);     //按字节进行比较,返回1
        echo " ";
        echo strnatcmp($str1,$str2);  //按自然排序法进行比较,返回-1
        echo " ";
        echo strnatcmp($str3,$str4);  //按自然排序法进行比较,返回1
    ?>

结果为:1 1 -1 1

说明

按照自然运算法进行比较,还可以使用另一个与strnatcmp()函数作用相同,但不区分大小写的strnatcasecmp()函数。

3.指定从源字符串的位置开始比较

strncmp()函数用来比较字符串中的前n个字符。

语法格式如下:

    int strncmp(string str1,string str2,int len)

如果字符串str1和str2相等,则返回0;如果str1大于str2,则返回值大于0;如果str1小于str2,则返回值小于0。strncmp()函数区分字母大小写。

strncmp()函数的参数说明如表5.3所示。

表5.3 strncmp()函数的参数说明

【例5.13】使用strncmp()函数比较字符串的前两个字符是否与源字符串相等,实例代码如下:(实例位置:资源包\TM\sl\5\13

    <?php
        $str1="I like PHP !";         //定义字符串常量
        $str2="i am fine !";          //定义字符串常量
        echo strncmp($str1,$str2,2);  //比较前两个字符
    ?>

结果为:-1

从上面的代码中可以看出,由于变量$str2中的字符串的首字母为小写,与变量$str1中的字符串不匹配,因此比较后的字符串返回值为-1。

5.2.6 检索字符串

在PHP中,提供了很多应用于字符串查找的函数,可以像Word那样实现对字符串的查找功能。下面讲解常用的字符串检索技术。

1.使用strstr()函数查找指定的关键字

strstr()函数用于获取一个指定字符串在另一个字符串中首次出现的位置到后者末尾的子字符串。如果执行成功,则返回剩余字符串(存在相匹配的字符);如果没有找到相匹配的字符,则返回false。

语法格式如下:

    string strstr ( string haystack, string needle)

strstr()函数的参数说明如表5.4所示。

表5.4 strstr()函数的参数说明

注意

strstr()函数区分字母的大小写。

【例5.14】使用strstr()函数获取上传图片的后缀,限制上传图片的格式。实例代码如下:(实例位置:资源包\TM\sl\5\14)

    <form method="post" action="index.php" enctype="multipart/form-data">
        <input type="hidden" name="action" value="upload" />
        <input type="file" name="u_file"/>
        <input type="submit" value="上传" />
    </form>
    <?php
        if(isset($_POST['action']) && $_POST['action'] == "upload"){      //判断提交按钮是否为空
        $file_path = "./uploads\\";                     //定义图片在服务器中的存储位置
        $picture_name=$_FILES['u_file']['name'];        //获取上传图片的名称
        $picture_name=strstr($picture_name , ".");      //通过strstr()函数截取上传图片的后缀
        if($picture_name!= ".jpg"){                     //根据后缀判断上传图片的格式是否符合要求
        echo "<script>alert('上传图片格式不正确,请重新上传'); window.location.href='index.php';</script>";
        }else if($_FILES['u_file']['tmp_name']){
             move_uploaded_file($_FILES['u_file']['tmp_name'],$file_path.$_FILES['u_file']['name']);//执行图片上传
        echo "图片上传成功!";
        }
        else
        echo "上传图片失败";
        }
    ?>

运行结果如图5.3所示。

图5.3 应用strstr()函数检索上传图片的后缀

注意

strrchr()函数与其正好相反,该函数是从字符串后序的位置开始检索子串(子字符串)的。

2.使用substr_count()函数检索子串出现的次数

substr_count()函数用于获取指定字符在字符串中出现的次数。

语法格式如下:

    int substr_count(string haystack,string needle)

其中,haystack是指定的字符串,needle为指定的字符。

【例5.15】使用substr_count()函数获取子串在字符串中出现的次数,实例代码如下:(实例位置:资源包\TM\sl\5\15

    <?php
        $str="明日编程词典";           //定义字符串常量
        echo substr_count($str,"词");  //输出查询的字符串
    ?>

结果为:1

注意

检索子串出现的次数一般常用于搜索引擎中,针对子串在字符串中出现的次数进行统计,便于用户第一时间掌握子串在字符串中出现的次数。

5.2.7 替换字符串

通过字符串的替换技术可以实现对指定字符串中的指定字符进行替换。字符串的替换技术可以通过以下两个函数实现:str_ireplace()函数和substr_replace()函数。

1.str_ireplace()函数

使用新的子字符串(子串)替换原始字符串中被指定要替换的字符串。

语法格式如下:

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

将所有在参数subject中出现的参数search以参数replace取代,参数&count表示取代字符串执行的次数。str_ireplace()函数不区分大小写。

str_ireplace()函数的参数说明如表5.5所示。

表5.5 str_ireplace()函数的参数说明

【例5.16】将文本中的指定字符串“某某”替换为“**”,并且输出替换后的结果,实例代码如下:(实例位置:资源包\TM\sl\5\16

    <?php
        $str2="某某";                                       //定义字符串常量
        $str1="**";                                         //定义字符串常量
        $str="   某某公司是一家以计算机软件技术为核心的高科技企业,多年来始终致力于行业管理软件开发、
                 数字化出版物制作、计算机网络系统综合应用以及行业电子商务网站开发等领域,涉及生产、管理、
                 控制、仓储、物流、营销、服务等行业";       //定义字符串常量
        echo str_ireplace($str2,$str1,$str);                //输出替换后的字符串
    ?>

结果为:

**公司是一家以计算机软件技术为核心的高科技企业,多年来始终致力于行业管理软件开发、数字化出版物制作、计算机网络系统综合应用以及行业电子商务网站开发等领域,涉及生产、管理、控制、仓储、物流、营销、服务等行业

注意

str_ireplace()函数在执行替换的操作时不区分大小写,如果需要对大小写加以区分,可以使用str_replace()函数。

字符串替换技术最常用的就是在搜索引擎的关键字处理中,可以使用字符串替换技术将搜索到的字符串中的关键字替换颜色,如查询关键字描红功能,使搜索到的结果更便于用户查看。

注意

查询关键字描红是指将查询关键字以特殊的颜色、字号或字体进行标识。这样可以使浏览者快速检索到所需的关键字,方便浏览者从搜索结果中查找所需内容。查询关键字描红适用于模糊查询。

下面通过具体的实例介绍如何实现查询关键字描红功能。

【例5.17】使用str_ireplace()函数替换查询关键字,当显示所查询的相关信息时,将输出的关键字的字体替换为红色。实例代码如下:(实例位置:资源包\TM\sl\5\17

    <?php
        $content="白领女子公寓,温馨街南行200米,交通便利,亲情化专人管理,您的理想选择!";
        $str="女子公寓";                                                            //定义查询的字符串常量
        echo str_ireplace($str,"<font color='#FF0000'>".$str."</font>",$content);   //替换字符串为红色字体
    ?>

运行结果如图5.4所示。

图5.4 应用str_ireplace()函数对查询关键字描红

注意

查询关键字描红功能在搜索引擎中被广泛应用,希望读者通过本例的学习,能够举一反三,从而开发出更加灵活、便捷的程序。

2.substr_replace()函数

substr_replace()函数用于对指定字符串中的部分字符串进行替换。

语法格式如下:

    mixed substr_replace(mixed string,mixed repl,mixed start,[mixed length])

substr_replace()函数的参数说明如表5.6所示。

表5.6 substr_replace()函数的参数说明

注意

如果参数start设置为负数,而参数length数值小于或等于start数值,那么length的值自动为0。

【例5.18】使用substr_replace()函数对指定字符串进行替换,实例代码如下:(实例位置:资源包\ TM\sl\5\18

    <?php
        $str="用今日的辛勤工作,换明日的双倍回报!";  //定义字符串常量
        $replace="百倍";                              //定义要替换的字符串
        echo substr_replace($str,$replace,26,4);      //替换字符串
    ?>

结果为:用今日的辛勤工作,换明日的百倍回报!

在上面的代码中,主要使用substr_replace()函数实现将字符串“双倍”替换为字符串“百倍”。

5.2.8 格式化字符串

在PHP中,字符串的格式化方式有多种,按照格式化的类型可以分为字符串的格式化和数字的格式化,数字的格式化最为常用,本节将重点讲解数字格式化函数number_format()。

number_format()函数用来将数字字符串格式化。

语法格式如下:

    string number_format(float number[,int decimals [,string dec_point[,string thousands_ sep]]])

其中,number为要格式化的数字,decimals为要保留的小数位数,dec_ point为指定小数点显示的字符,thousands_sep为指定千位分隔符显示的字符。

number_format()函数可以有1个、2个或是4个参数,但不能是3个参数。如果只有1个参数number,number的小数部分会被去掉,并且每个千位分隔符都是用英文小写逗号“,”来隔开;如果有2个参数,number将保留小数点后的位数到设定的值,且每一千就会以逗号来隔开;如果有4个参数,number将保留decimals个长度的小数部分,小数点被替换为dec_point,千位分隔符替换为thousands_sep。

【例5.19】使用number_format()函数对指定的数字字符串进行格式化处理,实例代码如下:(实例位置:资源包\TM\sl\5\19

    <?php
        $number = 1868.96;                          //定义数字字符串常量
        echo number_format($number);                //输出格式化后的数字字符串
        echo "<br>";                                //执行换行
        echo number_format($number, 2);             //输出格式化后的数字字符串
        echo "<br>";                                //执行换行
        $number2 = 11886655.760055;                 //定义数字字符串常量
        echo number_format($number2, 2, '.', '.');  //输出格式化后的数字字符串
    ?>

结果为:1,869

1,868.96

11.886.655.76

5.2.9 分割、合成字符串

1.分割字符串

字符串的分割是通过explode()函数实现的。explode()函数按照指定的规则对一个字符串进行分割,返回值为数组。

语法格式如下:

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

explode()函数的参数说明如表5.7所示。

表5.7 explode()函数的参数说明

【例5.20】使用explode()函数实现字符串分割,实例代码如下:(实例位置:资源包\TM\sl\5\20

    <?php
        $str="PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典";  //定义字符串常量
        $str_arr=explode("@",$str);                              //应用标识“@”分割字符串
        print_r($str_arr);                                       //输出字符串分割后的结果
    ?>

从上面的代码中可以看出,在分割字符$str时,以“@”作为分割的标识符进行拆分,分割成4个数组元素,最后使用print_r()输出函数输出数组中的元素。

运行结果如图5.5所示。

图5.5 使用explode()函数实现字符串分割

注意

在默认情况下,数组的第一个元素的索引为0。关于数组的相关知识将在后续的章节中进行详细讲解。

输出数组元素除了使用print_r()函数外,还可以使用echo语句进行输出,两者的区别是,print_r()函数输出的是一个数组列,而使用echo语句输出的是数组中的元素。将“print_r($str_arr);”使用如下代码替换即可输出数组中的元素。

    echo $str_arr[0];  //输出数组中的第1个元素
    echo $str_arr[1];  //输出数组中的第2个元素
    echo $str_arr[2];  //输出数组中的第3个元素
    echo $str_arr[3];  //输出数组中的第4个元素

结果为:PHP编程词典NET编程词典ASP编程词典JSP编程词典

说明

以上两种输出分割字符串的方法在运行结果的表现形式上会稍有不同。

2.合成字符串

implode()函数可以将数组的内容组合成一个新字符串。

语法格式如下:

    string implode(string glue, array pieces)

其中,glue是字符串类型,指定分隔符;pieces是数组类型,指定要被合并的数组。

【例5.21】应用implode()函数将数组中的内容以“@”为分隔符进行连接,从而组合成一个新的字符串,实例代码如下:(实例位置:资源包\TM\sl\5\21

    <?php
        $str="PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典";  //定义字符串常量
        $str_arr=explode("@",$str);                              //应用标识“@”分割字符串
        $array=implode("@",$str_arr);                            //将数组合成字符串
        echo $array;                                             //输出字符串
    ?>

结果为:PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典

说明

implode()函数和explode()函数是两个相对的函数,一个用于合成,另一个用于分割。