您的位置:首页 > 编程语言 > PHP开发

自学php-字符串操作2

2015-11-10 09:45 375 查看
比较字符串:共三种方式

按照字节进行字符串的比较:有strcmp()函数和strcasecmp()函数两种方法,区别在于strcmp()函数区分大小写,而strcasecmp()函数不区分字符的大小写,用法基本相同;strcmp()函数语法为:int strcmp(string str1,string str2);参数srt1和参数str2指定要比较的两个字符串,如果相等就返回0,如果参数str1大于参数str2则返回值大于0,反之,小于0;例如:

<?php

$str1="明日编程词典";

$str2="明日编程词典";

$str3="mrsoft";

$str4="MRSOFT";

echo strcmp($str1,$str2);  //比较两个字符串是否相等

echo strcmp($str3,$str4);   //区分大小写,比较是否相等

echo strcasecmp($str3,$str4);    //不区分大小写,比较是否相等

?>     补充说明:比较时注意字符串的ASCII编码

运行结果为:010

技巧:使用strcmp()函数比较用户登录系统中输入的用户名和密码是否正确,该函数可以要求用户输入的内容必须正确并且大小写匹配,从而提高安全性;

按自然排序法进行字符串比较:通过strnatcmp()函数实现,该函数比较的是字符串的数字部分,将字符串中的数字按照大小进行排序;语法为:int strnatcmp(string str1,string str2);如果str1和str2相等返回0,前者大于后者返回值大于0,前者小于后者返回值小于0,该函数区分字母大小写;例如:

<?php

//分别定义四个不同的字符串

$str1="str2.jpg";

$str2="str10.jpg";

$str3="mrsoft1";

$str4="MRSOFT2";

echo strcmp($str1,$str2);       //按字节比较

echo strcmp($str3,$str4);       //按字节比较

echo strnatcmp($str1,$str2);    //按自然排序法进行比较

echo strnatcmp($str3,$str4);     //按自然排序法比较

?>

运行结果为:1 1  -1 1

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

指定从源字符串的位置开始比较:strncmp()函数用来比较字符串中的前n个字符;语法为:int strncmp(string str1,string str2,int len);返回结果和之前的函数相同,该函数区分大小写;str1指定比较的第一个字符串,str2指定比较的第二个字符串,len必要参数,指定每个字符串中参与比较字符的数量;实例如下:

<?php

$str1="I Like PHP !";

$str2="i am fine !";

echo strncmp($str1,$str2,2);   //比较前两个字符

?>

运行结果为:   -1

检索字符串:函数查找字符串:

strstr()函数查找指定的关键字:获取字符串对象中,输出包含指定字符和其后的剩余字符;语法为:string strstr(string haystack,string needle);参数haystack是必要参数,指定从哪个字符串中进行搜索,参数needle也是必要参数,指定搜索的对象,如果该参数是一个数值,将搜索与这个数值的ASCII值相匹配的字符;该函数区分字母大小写;例如:

<?php

echo strstr("明日编程词典","编");   //输出查询的字符串

echo "<br>";

echo strstr("www.mrbccd.com","m");

echo "<br>";

echo strstr("0431-84972266","8");

?>

运行结果为:

编程词典
mrbccd.com
84972266

补充说明:strchr()函数与strstr()函数正好相反,该函数是从字符串后序的位置开始检索子字符串的

使用substr_count()函数检索子串出现的次数:获取指定字符在字符串中出现的次数:语法为:int substr_count(string haystack,string needle);参数haystack是指定的字符串,needle为指定字符;实例如下:

<?php

$str="明日编程词典";

echo substr_count($str,"词");  //输出要查询的字符串

?>

运行结果为   1

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

替换字符串:str_ireplace()函数和substr_replace()函数

str_ireplace()函数:使用新的子字符串替换原始字符串中被指定要替换的字符串;语法:mixed str_ireplace(mixed search,mixed replace,mixed subject[,int&count]);参数search是必要参数,指定要查找的字符串;replace必要参数,指定替换的值;subject必要参数,指定查找的范围;count可选参数,获取执行替换的数量;例如:

<?php

$str2="某某";

$str1="**";

$str="某某你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你你";

//echo str_ireplace($str2,$str1,$str);   //参数分别指,替换的字符,替换的结果,替换的对象

echo $str1;

echo $str2;

echo $str;

?>

运行结果为:**你那你你你你你你你你你你...

注意:该函数在替换操作时不区分大小写,如果需要区分大小写可以使用str_replace()函数;

技巧:该技术可用于处理搜索的关键字,描红关键字等;实例展示关键字描红:

<?php

$content="你你你你你你你你你真棒你你你你你你你你真棒你你你真棒你你你你你你你你你你";

$str="你真棒";

echo str_ireplace($str,"<font color='#FF0000'>".$str."</font>",$content);

?>

运行结果为:你你你你你你你你你真棒你你你你你你你你真棒你你你真棒你你你你你你你你你你

substr_replace()函数:对指定字符串中的部分字符串进行替换;语法为:string substr_replace(string str,string repl,int start,[int length]);str参数指定要操作的原始字符串;repl指定替换后的新字符串;start参数指定替换字符型开始位置,整数表示起始位置从字符串开头开始,负数相反,0表示从字符串中的第一个字符开始;length可选参数,指定返回的字符串长度,默认是整个字符串,正数表示起始位置从字符串开头开始,负数表示起始位置从字符串结尾开始,0表示插入非替换;注意:如果参数start设置为负数,而参数length数值小于或等于start数值,那么length的值自动为0;实例如下:

<?php

$str="ABCDEFGHIJK";

echo substr_replace($str,'百倍',4,2);//参数分别为指定字符串对象,替换后的字符,开始位置,替换长度

?>

运行结果为:ABCD百倍GHIJK   注意:替换中文时注意编码问题,易出错

格式化字符串:分为字符串的格式化和数字的格式化;使用number_format()函数格式化数字字符串;语法为:string number_format(float number,[int num_decimal_places],[string dec_seperator],string thousands_seperator);该函数可以有一个、两个或是4个参数,但是不能是是三个参数;如果只有number参数会舍去小数点后的值,且每一千会以”,“隔开;如果是两个参数,number格式化后会到小数点第num_decimal_places位,且每一千位以”,“隔开;如果是4个参数,number格式化后会到小数点第num_decimal_places位,dec_seperator用来替换小数点,thousands_seperator用来替换每一千隔开的”,“;

例如:

<?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

分隔字符串:explode()函数按照制定规则对一个字符串进行分隔,返回值为数组;语法:array explode(string separator,string str,[int limit]);参数separator为必要参数,指定的分隔符,如果separator为空字符串(”“),explode()将返回false,如果separator所包含的值在str中找不到,那么explode()函数将返回包含str单个元素的数组;str必要参数,指定要被进行分隔的字符串;limit可选参数,如果设置了该参数,则返回的数组包含最多limit个元素,而最后的元素将包含string的剩余部分,如果limit为负数,则返回除了最后-limit个元素的所有元素;实例如下:

<?php

$str="PHP 编程词典@NET 编程词典@ASP 编程词典@JSP 编程词典";

$str_arr=explode("@",$str);   //应用标识符@分隔字符串

print_r($str_arr);   //输出字符串分割后的结果

?>

运行结果为:Array ( [0] => PHP 编程词典 [1] => NET 编程词典 [2] => ASP 编程词典 [3] => JSP 编程词典 )

注意:此处的explode()函数和之前的函数有区别,返回的是一个数组,需要接收;再者:输出数组元素除了使用print_r()函数之外,还可以使用echo语句输出,区别在于,print_r()输出的是一个数组列,而echo语句输出的是数组中的元素,上面的print_r($str_arr);可以使用echo
$str_arr[0];  echo $str_arr[1];   echo $str_arr[2];   echo $str_arr[3];来代替;如:

<?php

$str="PHP 编程词典@NET 编程词典@ASP 编程词典@JSP 编程词典";

$str_arr=explode("@",$str);   //应用标识符@分隔字符串

//  print_r($str_arr);   //输出字符串分割后的结果

echo $str_arr[0];  

echo $str_arr[1];   

echo $str_arr[2];   

echo $str_arr[3];

?>

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

可以看出两种输出方式的结果在表现形式上稍有不同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: