Привет, я пытаюсь найти все перекрывающиеся подстроки в строке, вот мой код его единственное нахождение неповторяющегося ACA.
$haystack = "ACAAGACACATGCCACATTGTCC";
$needle = "ACA";
echo preg_match_all("/$needle/", $haystack, $matches);
Вы используете echo
напечатать возвращаемое значение preg_match_all
, То есть вы отображаете только количество найденных совпадений. То, что вы, вероятно, хотели сделать, было что-то вроде print_r($matches);
, как это:
$haystack = "ACAAGACACATGCCACATTGTCC";
$needle = "ACA";
preg_match_all("/$needle/", $haystack, $matches);
print_r($matches);
Выход:
Array
(
[0] => Array
(
[0] => ACA
[1] => ACA
[2] => ACA
)
)
Если вы действительно обеспокоены тем, что это считается ACACA
только один раз, ну, есть три вещи, которые нужно сказать об этом:
Тем не менее, если вы хотите посчитать это дважды, вы можете сделать это примерно так:
echo preg_match_all("/(?=$needle)/", $haystack, $matches);
Выход:
4
Других решений пока нет …