как найти массив вхождения символа в строку - PullRequest
4 голосов
/ 10 января 2012

Я ищу функцию в PHP, которая возвращает массив позиции символа в строке.

При вводе этих параметров "hello world", 'o' вернет (4,7).

Заранее спасибо.

Ответы [ 4 ]

9 голосов
/ 10 января 2012

Зацикливание не требуется

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

var_dump($letterPositions);
2 голосов
/ 10 января 2012

вы можете проверить это http://www.php.net/manual/en/function.strpos.php#92849 или http://www.php.net/manual/en/function.strpos.php#87061, есть пользовательские функции strpos для поиска всех вхождений

1 голос
/ 10 января 2012

В 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)
}

Демо

0 голосов
/ 10 января 2012
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'));

будет делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...