嗨,我试图在一个字符串中找到所有重叠的子字符串,这是我的代码,它唯一找到了非重复的 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
)
)
Demo
如果您真正关心的是它计数
ACACA
只有一次,嗯,有三件事需要说:echo preg_match_all("/(?=$needle)/", $haystack, $matches);
输出:
4
Demo
关于php - 查找字符串中重叠的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800017/