如何在字符串中查找字符出现的数组

时间:2012-01-10 07:15:05

标签: php string

我在PHP中搜索一个函数,以返回字符串中字符的位置数组。

输入那些参数“hello world”,“o”将返回(4,7)。

提前致谢。

4 个答案:

答案 0 :(得分:9)

不需要循环

$str = 'Hello World';
$letter='o';
$letterPositions = array_keys(array_intersect(str_split($str),array($letter)));

var_dump($letterPositions);

答案 1 :(得分:2)

你可以查看http://www.php.net/manual/en/function.strpos.php#92849http://www.php.net/manual/en/function.strpos.php#87061,有自定义strpos函数来查找所有出现次数

答案 2 :(得分:1)

在PHP中没有这样的函数存在(AFAIK)可以完成你正在寻找的东西,但你可以利用preg_match_all来获得子串模式的偏移量:

$str = "hello world";

$r = preg_match_all('/o/', $str, $matches, PREG_OFFSET_CAPTURE);
foreach($matches[0] as &$match) $match = $match[1];
list($matches) = $matches;
unset($match);

var_dump($matches);

输出:

array(2) {
  [0]=>
  int(4)
  [1]=>
  int(7)
}

Demo

答案 3 :(得分:0)

function searchPositions($text, $needle = ''){
    $positions = array();
    for($i = 0; $i < strlen($text);$i++){
        if($text[$i] == $needle){
            $positions[] = $i;
        }
    }
    return $positions;
}

print_r(searchPositions('Hello world!', 'o'));

会做的。