Sie verwenden echo
den Rückgabewert von preg_match_all
zu drucken. Das heißt, Sie zeigen nur die Anzahl der gefundenen Übereinstimmungen an. Was Sie wollten wahrscheinlich war, etwas zu tun wie print_r($matches);
, wie folgt aus:
$haystack = "ACAAGACACATGCCACATTGTCC";
$needle = "ACA";
preg_match_all("/$needle/", $haystack, $matches);
print_r($matches);
Ausgang:
Array
(
[0] => Array
(
[0] => ACA
[1] => ACA
[2] => ACA
)
)
Demo
Wenn Ihr echtes Problem ist, dass es ACACA
nur einmal gezählt, na ja, es sind drei Dinge, die dazu gesagt werden müssen:
- Das ist mit Regex grundsätzlich nicht zu vermeiden.
- Sie sollten dies nicht zweimal zählen, da es sich überlappt. Es ist keine echte Wiederholung des Musters.
Das heißt, wenn Sie doppelt so zählen möchten, können Sie mit so etwas wie dies so tun konnte:
echo preg_match_all("/(?=$needle)/", $haystack, $matches);
Ausgang:
4
Demo
aber ich brauche die überlappende ACA das ist mein Problem – lolsharp
// TT tritt zweimal in TTT auf! – lolsharp
@lolsharp Siehe meine Bearbeitung. –