我在PHP中搜索一个函数,以返回字符串中字符的位置数组。
输入那些参数“hello world”,“o”将返回(4,7)。
提前致谢。
答案 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#92849或http://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)
}
答案 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'));
会做的。