PHP 程序设计之字符串操作(二)

1. 比较字符串

字符串之间的比较的方法有多种,第一种是使用 strcmp() 和 strcasecmp() 函数按字节进行比较;第二种是使用 strnatcmp() 函数进行比较;第三种是使用 trncmp() 函数从源字符串的制定位置开始比较;

1.1 按字节进行字符串的比较

按字节进行字符串的比较有两种,分别是利用 strcmp() 和 strcasecmp() 函数
两个函数的区别是:strcmp() 函数区分字符的大小写strcasecmp() 函数不区分大小写,两个函数的实现方法基本相同;

int strcmp(string str1,string str2)

参数 str1 和 str2 指定要比较两个字符串;若相等,函数返回值为0;若参数 str1 大于参数 str2,函数返回值大于0;若参数 str1 小于参数 str2,函数返回值小于0;
注意: strcmp() 函数区分字符的大小写
例子:使用 strcmp() 和 strcasecmp() 函数分别对两个字符按字节进行比较

<?php
//定义字符串常量
$bbc1 = "编程语言!";
$bbc2 = "编程语言!";
$bbc3 = "CHINESE";
$bbc4 = "chinese";

//进行比较
echo strcmp($bbc1,$bbc2)."<br>";
//strcmp()函数区分大小写
echo strcmp($bbc3,$bbc4)."<br>";

//strcasecmp()函数不区分大小写
echo strcasecmp($bbc3,$bbc4)."<br>";
?>

执行结果如下所示
2021-12-18

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

PHP 中,按照自然排序法进行字符串的比较是通过 strnatcmp() 函数来实现;
自然排序法比较的是字符串中的数字部分,将字符串中的数字按照大小进行比较;
语言格式如下:

int strnatcmp(string str1,string str2)

若字符串相等,返回0;若参数 str1 大于参数 str2 ,返回值大于0;若参数 str1 小于参数 str2,返回值小于0,;
strnatcmp() 函数区分大小写;
自然运算法则中,2 比 10 小,而在计算机序列中,10 比 2 小,因为“10”中的第一个数字是“1”,它小于 2;
例子:使用 strnatcmp() 函数按自然排序法进行字符串的比较;

<?php
//定义字符串常量
$bbc1 = "编程语言2!";
$bbc2 = "编程语言10!";
$bbc3 = "CHINESE1";
$bbc4 = "chinese5";

//按字节进行比较
echo strcmp($bbc1,$bbc2)."<br>";
echo strcmp($bbc3,$bbc4)."<br>";

//按自然排序法进行比较
echo strnatcmp($bbc1,$bbc2)."<br>";
echo strnatcmp($bbc3,$bbc4)."<br>";
?>

执行结果如下所示
2021-12-18

按照自然排序法比较时,还能使用另一个与 strnatcmp() 函数作用相同,但不区分到小写的 strnatcasecmp() 函数

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

语法格式如下:
strncmp() 函数用来比较字符串中的前 n个字符;

int strncmp(string str1,string str2)

若字符串相等,函数返回0;若参数 str1 大于参数 str2,返回值大于 0;若参数 str1 小于参数 str2,返回值小于0;
strncmp() 函数区分大小写;
strncmp() 函数的参数如下表所示
2021-12-18
例子:使用 strncmp() 函数比较字符串的前两个字符是否与源字符串相等

<?php
//定义字符串常量
$bbc1 = "Hello word!";
$bbc2 = "a am teacher!";

//比较两个字符
echo strncmp($bbc1,$bbc2,2);
?>

2021-12-18

由于变量 $bbc2 中字符串的首字母为小写,与变量 $bbc1 中的字符串不匹配,所以比较后的函数返回值为 -1;

2 检索字符串

PHP 可以像Word一样实现字符串的查找功能;

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

strstr() 函数获取指定字符串在另一个字符串中首次出现位置直到后者末尾的子字符串;若执行成功,返回获取的子字符串(存在相匹配的字符);若失败,返回FALSE;
语法格式如下:

string strstr(string haystack,string needle)

strstr() 函数的参数如下表所示:
2021-1-18

例子:使用 strstr() 函数获取图片全名后缀,判断图片样式

<?php

//定义图片全名
$bbc = '1.png';
//截取图片全名的后缀
$bbc1 = strstr($bbc,".");
//根据后缀判断图片格式
if($bbc1 != ".jpg"){
    echo "图片格式不是jpg!";
}
else{
    echo "图片格式是jpg!";
}

?>

执行结果如下所示:
2021-12-18

2.2. substr_count() 函数:使用 substr_count() 函数检索字符出现的次数

substr_count() 函数获取指定字符在字符串中出现的次数;
语法格式如下

int substr_count(string haystack,string needle)

参数 haystack 为指定的字符串;
参数 needle 为指定的字符;
例子:使用 substr_count() 函数获取字符在字符串中出现的次数

<?php

//定义字符串常量
$bbc = "teacher 是伟大的人!";
//输出出现次数
echo substr_count($bbc,"e");

?>

执行结果如下所示:
2021-12-18

3. 替换字符串

通过以下两个函数能对字符串进行替换 str_ireplace() 函数substr_replace() 函数

3.1. str_ireplace() 函数

使用的字符串(子串)替换原始字符串中指定要替换的字符串;
语法格式如下:

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

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

2021-12-18

例子:将文本中的指定字符串“PHP”替换为“Python”,并且输出替换后的结果

<?php

//定义字符串常量
$bbc1 = "PHP";
$bbc2 = "Python";

$bbc = "Python 是一门高级编程语言,简单易学。PHP 语言简单易懂,
开发web用PHP编程语言更加方便,PHP还是一门优秀的Web后端语言";
//输出替换的字符串
echo str_ireplace($bbc1,$bbc2,$bbc);
?>

执行结果如下所示:
2021-12-18

str_ireplace() 函数在执行替换操作时不区分大小写,若需要区分大小写,可使用 str_relace() 函数
字符串替换常用在搜索引擎的关键字处理中,可使用字符串替换技术为搜索到的字符串中的关键字替换颜色
查询关键字描红是指将查询关键字以特殊的颜色、字号或字体进行标识,这样可使浏览者快速检索所需要的关键字,方便浏览者从搜索结果中查找所需要的内容,查询关键字描红适用于模糊查询
例子:用 str_ireplace() 函数替换查询关键字,当显示查询的相关信息时,将输出的关键字变红

<?php

//定义查询的字符串常量
$bbc = "在搜索结果中查找所需内容,查询关键字描红适用于模糊查询";
$bbc1 = "模糊查询";
//替换的字符变绿
echo str_ireplace($bbc1,"<font color='green'>".$bbc1."</font>",$bbc);

?>

执行结果如下所示:
2021-12-18

3.2. substr_replace() 函数

substr_replace() 函数用于对指定字符串中的部分字符串进行替换;
语法格式如下:

string substr_replace(string str,string rel,int start,[int length])

substr_replace() 函数的参数如下表
2021-12-18

若参数 start 设置为负数,而参数 length 小于或等于 start,那么 length 的值将自动为0;
例子:使用 substr_replace() 函数对指定字符串进行替换

<?php
//定义查询的字符串常量
$bbc = "离离原上草,一岁一枯荣!";
$bbc1 = "枯黄";
//替换字符串
echo substr_replace($bbc,$bbc1,18,5);
?>

执行结果如下所示:
2021-12-18

4. 格式化字符串

PHP 中,格式化字符串有多种方法,按照格式化的类型可分为字符串的格式化和数字字符串的格式化,数字字符串格式化最为常用;

4.1 number_format() 函数

number_format() 函数用来将数字字符串格式化;
语法格式如下:

string number_fromat(float number[,int num_places],[string dec_seperator,sting thousands_separator])

number_format() 函数可有一个、两个或四个参数,但不能是三个参数
若参数只有 number,将 number 格式化后会舍去小数点后的值,且第三位数字会以逗号(,)隔开;
若有两个参数,将number格式后得到小数点后第 num_decimal_places 位,且每三个数字会以逗号隔开;
若有四个参数,将number格式化后会得到小数点第 num_decimal_places 位,dec_seperator 用来替代的小数点(.),thousands_seperator 用来替代隔开的第3位数字的(,);
例子:使用 number_format() 函数对指定数字字符串进行格式化处理

<?php

//定义数字字符处常量
$bbc = "1312.15";
//输出格式化后的数字字符串
echo number_format($bbc);
echo "<br>";

//输出格式化后的数字字符串
echo number_format($bbc,2);
echo "<br>";

//定义数字字符串常量
$bbc = "131512.6748";
echo number_format($bbc,2,'.','.');
?>

执行结果如下所示:
2021-12-18

5. 分割字符串

explode() 函数可分割字符串;explode() 函数按指定的规则对字符串进行分割,返回值为数组;

5.1. explode() 函数

语法格式如下:

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

explode() 函数的参数如下表所示

2021-12-18

例子:用 explode() 函数实现字符串的分割

<?php

//定义数字字符处常量
$bbc = "Python 语言@PHP 语言@Java 语言@C 语言";
$bbc1 = explode("@",$bbc);
//输出字符串分割后的结果
print_r($bbc1);
?>

执行结果如下所示:
2021-12-18

在分割字符串$bbc时,以“@”作为分割标识符进行拆分,分割为 4个数组元素,再使用 print_r() 输出数组中的元素;
默认数组第一个元素的索引为0;
数组的输出,除使用 print_r() 函数外,还能用 echo 语句进行输出;
两者的区别是:print_r() 函数输出的数组列;echo 语句输出的是数组中的元素;

<?php

//定义数字字符处常量
$bbc = "Python 语言@PHP 语言@Java 语言@C 语言";
$bbc1 = explode("@",$bbc);
//输出字符串分割后的结果
echo $bbc1[0];
echo $bbc1[1];
echo $bbc1[2];
echo $bbc1[3];
?>

执行结果如下所示:
2021-12-18

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

6. 合成字符串

6.1 implode() 函数

implode() 函数能将数组的内容组合成一个新的字符串
语法格式入下:

string implode(string glue,array poeces)

参数 glue 是字符串类型,用于指定分隔符;参数 pieces 是数组类型,用来指定要被合并的数组;
例子: 用implode() 函数将数组中的内容以@为分隔符进行连接,组成一个新的字符串

<?php

//定义数字字符处常量
$bbc = "Python 语言@PHP 语言@Java 语言@C 语言@HTML";
//应用@分割字符串
$bbc1 = explode("@",$bbc);
//将数组合并成字符串
$bbc2 = implode("@",$bbc1);
//输出字符串
echo $bbc2;
?>

执行结果如下所示:
2021-12-18

结束语

若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有什么错误,欢迎大家指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值