6.2 对字符串做比较和替换
字符串比较通常是指判断两个字符串是否一样,用更专业的说法就是比较两个字符串的大小。PHP通过字符的ASCII码来决定字符的大小,从而决定字符串的大小。例如,字母a的ASCII码是097,字母b的ASCII码是098,因此b>a。字母表中,越靠后的字母的ASCII码越大,所有小写字母比大写字母的ASCII码大。
6.2.1 比较两个字符串大小
PHP提供了函数strcmp()对两个字符串比较大小,语法如下。
int strcmp(string $str1, string $str2);
函数strcmp()接受两个参数,它们是待比较的字符串。该函数返回值是整数,如果字符串$str1和字符串$str2相等,则函数返回0;如果字符串$str1小于字符串$str2,则函数返回-1;如果字符串$str1大于字符串$str2,则函数返回值大于0。代码6-3演示了函数strcmp()的用法。
代码6-3使 用函数strcmp()比较字符串大小6-3.php
01 <?php 02 $str1 = "PHP string"; // 定义两个字符串变量 03 $str2 = "PHP String"; 04 05 if(strcmp($str1,$str2)==0) // 比较两个字符串变量 06 { 07 echo "$str1 和 $str2 相等"; 08 echo "<br/"; 09 } 10 else 11 { 12 echo "$str1 和 $str2 不相等"; 13 echo "<br/>"; 14 echo "<br/>"; 15 echo " 函数strcmp 的比较结果为:".strcmp($str1,$str2); 16 } 17 ?>
【代码解析】这段代码的执行结果如图6-3所示。从结果可以看出,函数strcmp()比较字符串中的每个字符,直到遇到第一个不同的字符为止,根据这两个字符的大小关系,来决定字符串的大小。如果比较到最后,没有遇到不同的字符,该函数就会返回0。
注意 函数strcmp()对字符串的比较是区分大小写的。
6.2.2 字符串的替换
在实际开发中,有时需要将字符串中的某些字符串替换成其他字符串,这可以通过PHP的内置函数str_replace()来完成。该函数的语法如下。
string str_replace(string $search, string $replace, string $str);
该函数将字符串$str中的$search部分全部替换成字符串$replace,并且返回替换后的字符串。代码6-4演示了该函数的用法。
代码6-4使 用函数str_replace()做字符串替换(一)6-4.php
01 <?php 02 $str1 = "I'm learning programming with Perl"; // 定义两个字符串变量 03 $str2 = "PHP"; 04 05 echo " 替换前:".$str1; 06 07 $str = str_replace("Perl",$str2,$str1); // 用$str 的值替换字符串Perl 08 echo "<br/>"; 09 echo "<br/>"; 10 11 echo " 替换后:".$str; 12 ?>
【代码解析】这段代码的执行结果如图6-4所示。
图6-3 使用strcmp()比较两个字符串的大小
图6-4 使用str_replace()进行字符串替换(一)
该函数也可以接受数组参数。代码6-5演示了函数str_replace()接受数组参数来完成字符串的替换。
代码6-5使 用函数str_replace()做字符串替换(二)6-6.php
01 <?php 02 $str = "I prefer to use JSP,PHP,ASP!"; // 定义字符串变量$str 03 04 $page_lan = array( 05 "JSP", 06 "PHP", 07 "ASP" 08 ); // 定义数组变量$page_lan 09 10 $base_lan = array( 11 "C", 12 "C++", 13 "Java" 14 ); // 定义数组变量$base_lan 15 16 $new_str = str_replace($page_lan,$base_lan,$str); // 开始字符串替换 17 echo " 替换前:".$str; 18 19 echo "<br/>"; 20 echo "<br/>"; 21 echo " 替换后:".$new_str; 22 ?>
【代码解析】该程序首先将字符串$str中要替换的部分写成数组的形式(第04~08行),然后将替换内容也存放在数组单元中(第10~14行),第16行的函数str_replace()会按两个数组元素的对应顺序依次在字符串中进行替换。这段程序的执行结果如图6-5所示。
图6-5 使用str_replace()进行字符串替换(二)