2017-03-15 4 views

Antwort

0

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:

  1. Das ist mit Regex grundsätzlich nicht zu vermeiden.
  2. Sie sollten dies nicht zweimal zählen, da es sich überlappt. Es ist keine echte Wiederholung des Musters.
  3. 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

+0

aber ich brauche die überlappende ACA das ist mein Problem – lolsharp

+0

// TT tritt zweimal in TTT auf! – lolsharp

+0

@lolsharp Siehe meine Bearbeitung. –

Verwandte Themen