找子串个数的练习

// 用for循环或者while循环, 配置strpos
// 计算某父串中, 子串出现的个数?

/*
函数名 subnum
参数: string $str 待查父串,
        string $sub,子串
return int ,即子串个数
*/

/*
思路:
先从头查找子串,找到后,则偏移过去子串,继续查找. 直到查不到.
*/
function subnum($str,$sub) {
    $sublen = strlen($sub); // 计算出子串的长度
    $strlen = strlen($str); // 计算出父串的长度

    if($sublen > $strlen) {
        return 0;
    } // 如果子串比父串长,没必要找了
   
    for($offset = 0,$num=0;($offset = strpos($str,$sub,$offset))!==false;) {
        $num += 1;
        $offset += $sublen;
    }

    /* 如果你熟悉for循环,可以这么写
    for($offset = 0,$num=0;($offset = strpos($str,$sub,$offset))!==false;$num += 1,$offset += $sublen) {
    }
    */

    return $num;

}

 

$str = 'how are you! fine thank you,fine, may be you are right, 256, I dont think so,let me see,I can not fine';

echo '找到',subnum($str,'fine'),'个fine';

echo '<br />';


/*
知识综合起来,就能发挥比较大的作用,
此处用的for循环 + strpos, 计算子串的个数
*/

//开发方法二
echo '我也找到',substr_count($str,'fine'),'个fine';


/*
这是为什么让大家重视字符串,
PHP的字符串太强大了.

你要是不了解,可能会多花冤枉时间,费力写出一个函数来,结果,本来就有.

*/

<?php
 function subnum($str,$sub){
    $sublen = strlen($sub);
    $strlen = strlen($str);
    if($sublen>$strlen){
     return 0;
    }
    for($offset =0,$num=0;strpos($str,$sub,$offset)!==false;$num++){
         $offset =strpos($str,$sub,$offset)+$sublen;
   
    }
     return $num;
 
 
 
 }

$str= 'd;fljks;lfjfjsdflkd,fine,;jefineinfine;;;fine';

 echo subnum($str,'fine');
 echo '<br />';
//方法二

 echo substr_count($str,'fine');

 


?>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值