Tester: Positionen eines Suchstrings zurückgeben, ähnlich strpos?!

Hallo,

wie kann ich bei PHP die Positionen(!) von einem Suchstring (in einem anderen String) zurückgeben? Strpos liefert immer nur die erste Position, gibts was ähnliches, ohne Strpos aufwendig zu verschachteln?

Danke!!

  1. Hallo,

    das geht mit preg_match_all() mit der Einstellung PREG_OFFSET_CAPTURE

    Oder auch mit explode(), strlen() und ein bisschen Rechnen.

    Außerdem könntest Du auch noch eine eigene Funktion schreiben. Die würde aber bestimmt am längsten dauern.

    Viel Ergolg

    Tom

    1. Hallo,

      das geht mit preg_match_all() mit der Einstellung PREG_OFFSET_CAPTURE

      Es will nicht so wie ich will .. der Quellcode sieht jetzt so aus:

      $as='abc abcde cde';

      preg_match_all ("/c/", $as, $out);
      echo count($out); //sollte 3 sein ?!

      Wohin kommt preg_offset_capture? Als Argument nach $out wird es jedenfalls nicht angenommen.

      Eigentlich sollte jetzt sowas wie

      $out[0] == 2
      $out[1] == 6
      $out[2] == 10

      im Array stehen. Langsam werd ich ganz konfus *g*, was mach ich falsch?

      Tester

      1. Hallo,

        preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);

        versuchs mal so.

        Tom

        1. Hallo,

          preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);
          versuchs mal so.

          $as='abc abcde cde';

          preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);

          Nach hin und herprobieren kam ich auf das gewünschte:

          echo $out[0][0][1].'<br>';      liefert 2
          echo $out[0][1][1].'<br>';      liefert 6
          echo $out[0][2][1].'<br>';      liefert 10

          Bleibt diese Schachtelung so und wieso ist sie so tief?

          Prinzipiell würde es mir aber so reichen wenn die Struktur auch bei anderen Suchstrings so bleibt.

          Tom

          Tester