PHP处理子字符串相关函数

目录

 

【1】substr — 返回字符串的子串

【2】substr_replace— 替换字符串的子串

【3】substr_count — 计算子字符串出现的次数

【4】substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度) 

【小结】

 


【1】substr — 返回字符串的子串

作用:
	返回字符串 string 由 start 和 length 参数指定的子字符串。
函数:
	substr ( string $string , int $start [, int $length ] ) : string
参数:
	$string 输入字符串
	$start 如果是非负数,返回的字符串从$start开始,位置从0计算。
        如果它是负数,返回的字符串从string结尾处向前第start个字符开始。
        如果$start大于$string的字符长度,返回False。
	$length如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。
        如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符。
        如果提供了负数的 length,那么 string 末尾处的 length 个字符将会被省略
        (若 start 是负数则从字符串尾部算起)。
返回值:
	返回提取的子字符串, 或者在失败时返回 FALSE。
echo substr('Hello Tacks!',0),'<br/>';//Hello Tacks! 从第一个字符到到最后
echo substr('Hello Tacks!',6),'<br/>';// Tacks! 从第七个字符到最后
echo substr('Hello Tacks!',6,5),'<br/>';//Tacks 从第七个字符截取五个长度的字符
echo substr('Hello Tacks!',-1),'<br/>';//!      从最后一个字符截取一个
echo substr('Hello Tacks!',-6,5),'<br/>';//Tacks从倒数第六个字符截取五个长度的字符
echo substr('Hello Tacks!',6,-5),'<br/>';//T    从第七个字符开始然后截取的字符后面五个字符也删去
echo substr('Hello Tacks!',-6,-5),'<br/>';//T   从倒数第六个字符开始向后截取同时后面五个字符也删去
echo substr('Hello Tacks!',12),'<br/>';//超出字符串长度,返回false,即没有echo出来东西。

【2】substr_replace— 替换字符串的子串

作用:
	substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。
函数:
	substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) : mixed
参数:
	$string 字符串		$replacement替换字符串	$start替换开始位置(正从左边负从右边)
	$length	如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。
			如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。
			如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。
			如果 length 为 0,那么这个函数的功能为将 replacement 插入到 string 的 start 位置处。
返回值:
	返回结果字符串。如果 string 是个数组,那么也将返回一个数组。
$str = 'Hello world!';
echo $str,'<br/>';//Hello world!
echo substr_replace($str,'Tacks',0),'<br/>';#Tacks 全部替换
echo substr_replace($str,'Tacks',0,0),'<br/>';#TacksHello world! 插入开头的地方
echo substr_replace($str,'Tacks',6,5),'<br/>';#Hello Tacks!    从第七个字符开始替换Tacks原来位置的五个长度的字符
echo substr_replace($str,'Tacks',6,1),'<br/>';#Hello Tacksorld!从第七个字符开始替换Tacks原来位置的一个长度的字符
echo substr_replace($str,'Tacks',6,-1),'<br/>';#Hello Tacks!   从第七个字符开始替换Tacks距离结尾末端一个字符
echo substr_replace($str,'',6,-1),'<br/>';#Hello ! 删除从第七个字符到结尾末端的一个字符
$arr = ["1: AAA","2: AAA","3: AAA"];
print_r(substr_replace($arr,'BBB',3,3));//替换数组中每个单元的第四个字符开始原来位置的三个字符
//Array ( [0] => 1: BBB [1] => 2: BBB [2] => 3: BBB ) 

【3】substr_count — 计算子字符串出现的次数

作用:
	substr_count() 返回子字符串needle 在字符串 haystack 中出现的次数。注意 needle 区分大小写。
函数:
	substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] ) : int
参数:
	$haystack	在此字符串中进行搜索。
	$needle		要搜索的字符串。
	$offset		开始计数的偏移位置。如果是负数,就从字符的末尾开始统计。
	$length		指定偏移位置之后的最大搜索长度。
				如果偏移量加上这个长度的和大于 haystack 的总长度,则打印警告信息。
				负数的长度 length 是从 haystack 的末尾开始统计的。
				(7.1.0	开始支持负数的 offset 和 length)
返回值:
	该函数返回整型。
备注:
	该函数不会计算重叠字符串。
$str = "This is Tacks's code";
echo substr_count($str,'is'),'<br/>';//2     从开始搜索到结束
echo substr_count($str,'is',4),'<br/>';//1   从第五个字符开始向后搜索
echo substr_count($str,'is',4,1),'<br/>';//0 从第五个字符开始向后搜索1一个字符 
echo substr_count($str,'is',4,20),'<br/>';//4+20 大于24 生成警告
echo substr_count('TacksTacksTacks','TacksTacks');//1 不统计重复字符

【4】substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度) 

作用:
	substr_compare() 从偏移位置 offset 开始比较 main_str 与 str,比较长度为 length 个字符。
函数:
	substr_compare ( string $main_str , string $str , int $offset [, int $length [, bool $case_insensitivity = FALSE ]] ) : int
参数:
	$main_str 待比较的第一个字符串 $str待比较的第二个字符串
	$offset 比较开始的位置。如果为负数,则从字符串结尾处开始算起。
	$length 比较的长度。默认值为 str 的长度与 main_str 的长度减去位置偏移量 offset 后二者中的较大者。要大于等于0,否则会报错。
	$case_insensitivity 为 TRUE,比较将不区分大小写。默认FALSE
返回值:	
	如果 main_str 从偏移位置 offset 起的子字符串小于 str,则返回小于 0 的数;
	如果大于 str,则返回大于 0 的数;
	如果二者相等,则返回 0。
echo substr_compare('Tacks','Ta',0,2),'<br/>';//0相等
echo substr_compare('Tacks','cks',2,3),'<br/>';//0 相等
echo substr_compare('Tacks','ta',0,2),'<br/>';//-1 从第一个字符开始比较 大写T的ascii码小于小写t 返回-1
echo substr_compare('ta','Tacks',0,2),'<br/>';//1 从第一个字符开始比较 小写t大于大写T的ascii码 返回1
echo substr_compare('Tacks','s',5,1),'<br/>';//长度溢出报错

【小结】

  1. substr($string,$start,$length)处理$string原始字符串,截取从$start开始位置到$length的长度的字符。返回截取的字符。
  2. substr_replace($string,$replacement,$start,$length)处理原始$string字符串,从$start开始长度$length的字符替换为$replacement字符串。返回替换后的字符,也可以替换数组。
  3. substr_count($haystacks,$needle[,$offset,$length])在$haystacks原始的字符串中,偏移$offset后,搜索范围长度为$length,然后看搜索$needle字符串出现次数。返回子字符串次数。
  4. substr_compare这个函数比较两个字符串中子串的大小,根据ASCII。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值