您好我试图在字符串中找到所有重叠的子字符串,这是我的代码,它只能找到非重复的ACA。
$haystack = "ACAAGACACATGCCACATTGTCC";
$needle = "ACA";
echo preg_match_all("/$needle/", $haystack, $matches);
答案 0 :(得分:1)
您正在使用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