Text zwischen zwei Strings auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Text zwischen zwei Strings auslesen

    Hallo zusammen,

    also kurz zum vorab, ich weiß es gibt die Funktion "erstes Zeichen suchen", aber ich glaub damit komme ich nicht weiter.

    Ich möchte das ein Text geparst wird wenn er in bestimmten Textblöcken steht.

    Mein Beispieltext:

    Unser aktueller Umsatz liegt bei [SQLDB1]select * from Umsatz[/SQLDB1], wir haben dabei folgende Kunden [SQLDB1]select * from Kunden[/SQLDB1] aus folgendenen Städten: [SQLDB1]select * from Staedte[/SQLDB1].

    Das ist ein sinnfreies Beispiel!!

    Ich möchte also am Ende in einem Array stehen haben

    $SQLDB1[0] = select * from Umsatz
    $SQLDB1[1] = select * from Kunden
    $SQLDB1[2] = select * from Staedte

    Ich möchte eigentlich ungern die Position aufwendig mit strpos auszählen.
    Vielleicht gibt es ja ein Beispiel ala

    while(text_enthält($suchbegriff1,$suchbegriff2,$ursprungstext,$dann_hierrein_damit)
    {
    echo $dann_hierrein_damit
    }

    wäre cool wenn mir einer weiterhelfen könnte.

    Vielen Dank im vorraus.

  • #2
    Hallo,

    hast du dich schonmal mit regulären Ausdrücken beschäftigt? Die Funktion preg_split ist imho dafür die beste Wahl.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      $string = "textausgabe1und dann textausgabe2";
      $array = preg_split('/\[b\](.*?)\[\/b\]/',$string);
      var_dump($array);

      es sollte eigentlich textausgabe1 und textausgabe2 rauskommen, aber irgendwie tuts nicht :/

      Comment


      • #4
        Originally posted by simms View Post
        es sollte eigentlich textausgabe1 und textausgabe2 rauskommen
        Eigentlich sollte da viel mehr rauskommen, aber erzähl mal, was du bekommst und was du gerne hättest. Hast du dir den Modifier PREG_SPLIT_DELIM_CAPTURE schon angesehen?

        Es kann auch sein, dass preg_match_all für dich besser passt, aber das musst du wissen.
        Last edited by AmicaNoctis; 21-05-2010, 18:04.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          das Delim Capture nützt mir eigentlich nichts, die [b] Dinger brauch ich nicht.

          Also in meinen Beispiel bekomme ich als Ergebniss:

          PHP Code:
          $string "[b]textausgabe1[/b]und nun ist [b]textausgabe2[/b] und auch noch [b]textausgabe32[/b]";
              
          $array preg_split('/\[b\](.*?)\[\/b\]/',$string);
              
          var_dump($array); 
          Ergebniss:
          und nun ist
          und auch noch

          Aber ich möchte eigentlich (im Grunde genau das Gegenteil:
          textausgabe1
          textausgabe2
          textausgabe3
          Last edited by simms; 21-05-2010, 18:19.

          Comment


          • #6
            Erstens hast du den limit-Parameter ausgelassen (-1 angeben) und zweitens – wie gesagt – dann halt preg_match_all verwenden.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Comment


            • #7
              Originally posted by AmicaNoctis View Post
              Erstens hast du den limit-Parameter ausgelassen (-1 angeben) und zweitens – wie gesagt – dann halt preg_match_all verwenden.

              Jetzt hab ich es .
              Danke für deine Unterstützung.

              PHP Code:
                  $string "[b]textausgabe1[/b]test[b]textausgabe2[/b]test[b]textausgabe3[/b]test";
                  
              preg_match_all('/\[b\](.*?)\[\/b\]/',$string,$array);
                  echo 
              "<br><br><br>now the return<br>-------------------------------------------<br>";
                  
              $i 0
                  while(
              $i<=count($array))
                  {
                  echo 
              $array[1][$i]."<br>";
                  
              $i++;
                  } 

              Comment

              Working...
              X