PHP程序设计读书笔记七

一、比较字符串:
1."=="和"==="的区别:
"=="在比较之前会先把非字符串类型的操作数转换成字符串,所以"3"==3为true
"==="在比较之前不进行转换,并且如果两个参数的数据类型不同就返回false
2.当比较运算符(<,<=,>,>=)的一个参数是数字时,在比较之前,其他参数将被转换为数字类型,所以"PHP Rocks"<5为true(字符串转换为数字的规则如果有不清楚的可以参考我之前的博客:PHP程序设计读书笔记三)
3.字符串比较函数:
①strcmp(string1,string2)函数:
如果string1的字典顺序排在string2之前(即string1 < string2),函数返回小于零的数字
如果string1的字典顺序排在string2之后(即string1 > string2),函数返回大于零的数字
如果它们相等,则返回数字零
②strcasecmp()是strcmp()的一个变种,它在比较字符串之前先把字符串转换为小写,参数和返回值都与strcmp相同
③strncmp()和strncasecmp()函数有一个附加的参数,这个参数用来指定用于比较的字符串的个数(从第一个字符串开始算起)
$strncmp(string1,string2,len);//直接比较前len个字符
$strncasecmp(string1,string2,len);//先将字符串都转换为小写,再比较前len个字符
④strnatcmp()和strnatcasecmp()用于进行自然顺序的比较,这两个函数都与strcmp()有相同的参数和返回值;
自然顺序的比较可以识别出待比较字符串中数字的部分,并且把字符串部分和数字部分分开来排序。
example:
自然顺序:pic1.jpg < pic5.jpg < pic10.jpg < pic50.jpg
ASCII顺序:pic1.jpg < pic10.jpg < pic5.jpg < pic50.jpg
二、近似相等:
1.soundex(string)和metaphone(string):这两个函数分别利用Soundex和metaphone算法生成一个字符串来大致表示单词在英语中如何发音。通过比较两个字符串的发音,来判断它们是否近似相等。
一般来说metaphone算法更准确一点

example:

<?php
			/*
			 * 近似相等测试
			 */
			$string1 = "Fred";
			$string2 = "phred";
			if(soundex($string1) == soundex($string2)){
				print("soundex:$string1 sounds like $string2\n");
			}else{
				print("soundex:$string1 doesn't sounds like $string2\n");
			}
			if(metaphone($string1) == metaphone($string2)){
				print("metaphone:$string1 sounds like $string2\n");
			}else{
				print("metaphone:$string1 sounds like $string2\n");
			}
		?>
输出:


2.similar_text(string1,string2[,percentage]);返回两个字符串参数公有的字符的个数,第三个参数作为存放共有字符百分比的变量。
3.levenshtein(string1,string2[,cost_ins,cost_rep,cost_del]);该函数通过增加、删除或者替换多少个字符来计算两个字符的相似度
example:"cat"和"cot"的levenshtein的距离为1,因为你只需要将'a'变成'o'就可以使两个字符相同。
一般来说,使用这种计算方法来计算相似度比使用similar_text()函数更快。
最后三个参数分别是:插入、替换、删除操作的权重(权重越大,对相似度影响越大)
三、处理和查找字符串
1.分离出字符串的子串:
$piece = substr(string,start [,length]);
start:子串开始截取的位置,如果是0,则是从字符串开头开始截取
length:是要截取的长度
2.统计出一个子串在整个字符串中出现的次数:$num = substr_count(string,substring);
3.使用某个字符互传替换字符串中的某些子串:
$string = substr_replace(original,new,start[,length]);
start
为正:表示从字符串的开头开始计数(0为字符串的开头)
为负:表示从字符串的结尾开始计数
length:
为正:表示向右替换
为负:表示向左替换
不指定:删除从start到字符串末尾的字符
example:

<?php
		/*
		 * 字符串的基本操作:取子串、替换、计数
		 */

		//取子串
		$string1 = "Fred Flintstone";
		echo $sub1 = substr($string1,6,4)."\n";//lint
		echo $sub2 = substr($string1,11)."\n";//tone
		//计数
		$string2 = <<< End
		Well,there's egg and bacon; egg sausage and bacon; egg and spam;
		egg bacon and spam;egg gacon sausage and spam;
	End;
		echo $count = substr_count($string2, "egg")."\n";//5
		//字符串替换
		$greeting = "good morning citizen";
		echo $farewell = substr_replace($greeting,"bye",5,7)."\n";//good bye citizen
		//设定length为0来实现无删除的插入
		echo $farewell = substr_replace($farewell,"kind ",9,0);//good bye kind citizen
		//设定new为""来实现无插入的删除
		echo $farewell = substr_replace($farewell,"",8)."\n";//good bye
		//在字符串的开头插入内容
		echo $farewell = substr_replace($farewell,"now it's time to say ",0,0);//now it's time to say good bye
		//如果start为负值,则指定从字符串末尾开始到字符串开头替换的字符数
		echo $farewell = substr_replace($farewell,"riddance",-4)."\n";//now it's time to say good riddance
		//如果length为负值,则指定从字符串末尾开始删除的字符个数
		echo $farewell = substr_replace($farewell,"",-9,-6)."\n";//now it's time to say good dance
		
	?>	
输出:


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值