Text zwischen zwei Strings auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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]

    Kommentar


    • #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 :/

      Kommentar


      • #4
        Zitat von simms Beitrag anzeigen
        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.
        Zuletzt geändert von AmicaNoctis; 21.05.2010, 19: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]

        Kommentar


        • #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
          Zuletzt geändert von simms; 21.05.2010, 19:19.

          Kommentar


          • #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]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              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++;
                  } 

              Kommentar

              Lädt...
              X