php 中查找某个字符在字符串中出现的所有位置

来源:互联网 发布:淘宝店铺背景设置 编辑:程序博客网 时间:2024/04/30 09:20

昨天回家,一个朋友讨论起来查找某个字符在指定的字符串中所有出现的位置..

于是,今天早上写个方法试试

 

 

 

/**

 * 查找某个字符在字符串中出现的所有位置

 * $str string 被查询字符串

 * $char string 查询字符

 * $arr  array() 返回数组

 */

 

function getCharpos($str, $char){

     $j = 0;

     $g = 0;

     $arr = array();

     $count = substr_count($str, $char);

     for($i = 0; $i < $count; $i++){

            $j = strpos($str, $char);

            if($i == 0){

                 $arr[] = $j;

            }else{

           $arr[] = $j + $g + 1;

            }

          $str = substr($str, $j+1);

          $g = end($arr);

    }

    return $arr;

}

 

原理就是截取字符串,再查找这个字符的位置。。。

 

不过后来,我看了一下手册,发现函数strpos还有第三个参数,就是告诉函数从哪算起,发现这个比较方便。。。

于是改成:

 

function getCharpos2($str, $char){

       $j = 0;

       $arr = array();

       $count = substr_count($str, $char);

       for($i = 0; $i < $count; $i++){

             $j = strpos($str, $char, $j);

             $arr[] = $j;

             $j = $j+1;

       }

       return $arr;

}

 

如果发现什么问题,欢迎指出来!!