RegEx

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

  • RegEx

    Also. Ich habe hier ein ChatLog aus dem IRC in folgender Form:
    (SOMENAME) message0 (ANOTHERNAME) message1 (ANOTHERNAME2) message2
    So.

    Dieses Log will ich jetzt in ein Array packen, damit ich mit meinen Scripten darauf zugreifen kann. Ich will nur den Text der Nachrichten haben (also im Besipiel oben "message0", "message1" und "message2") und wollte das ganze jetzt mit einer "Regular Expression" und preg_split rausfiltern. Leider verstehe ich das nicht so ganz. Ich habe unter anderem folgendes versucht:
    PHP-Code:
    $messages preg_split('/\(.+\) /'"(SOMENAME) message0 (ANOTHERNAME) message1 (ANOTHERNAME2) message2"); 
    Das erzeugt aber nichts brauchbares.

    Ich hoffe ihr könnt mir helfen. Ich hab mir schon verschiedene Tutorials reingezogen und verschiedene Hilfen durchgelesen, aber ich verstehe es einfach nicht. :/

  • #2
    hast du auch unser tutorial angesehen? Evtl. hilft dir preg_match besser?

    Kommentar


    • #3
      In der Message darf natürlich '(' nicht vorkommen!
      PHP-Code:
      $data "(SOMENAME) message0 (ANOTHERNAME) message1 (ANOTHERNAME2) message2";
      preg_match_all('/\(\w+\)([^(]+)/'$data$matches);
      echo 
      '<pre>'var_dump($matches[1]); echo '</pre>'
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        hast du auch unser tutorial angesehen? Evtl. hilft dir preg_match besser?
        Klar hab ich das.
        Desshalb dachte ich ja auch, mein Ausruck '/(w+)([^(]+)/' wäre richtig um das zu machen, was ich beschrieben habe. Nur leider tut er es nicht und ich verstehe nicht warum. :/

        PHP-Code:
        $data "(SOMENAME) message0 (ANOTHERNAME) message1 (ANOTHERNAME2) message2";
        preg_match_all('/(w+)([^(]+)/'$data$matches);
        echo 
        '<pre>'var_dump($matches[1]); echo '</pre>'
        Ich bekomme dann immer ein Array mit drei leeren Arrays als Inhalt.

        Kommentar


        • #5
          weil das Forum mal wieder Backslashes verschluckt hat ...

          '/\(w+\)([^(]+)/'

          so stimmt´s.
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            PHP-Code:
            preg_match_all('/\(\w+\)([^(]+)/'"(SOMENAME) message0 (ANOTHERNAME) message1 (ANOTHERNAME2) message2"$messages);
            var_dump ($messages);

            // Ausgabe:

            array(2) {
              [
            0]=>
              array(
            3) {
                [
            0]=>
                
            string(20"(SOMENAME) message0 "
                
            [1]=>
                
            string(23"(ANOTHERNAME) message1 "
                
            [2]=>
                
            string(23"(ANOTHERNAME2) message2"
              
            }
              [
            1]=>
              array(
            3) {
                [
            0]=>
                
            string(10" message0 "
                
            [1]=>
                
            string(10" message1 "
                
            [2]=>
                
            string(9" message2"
              
            }

            Dankeschön!

            Kommentar

            Lädt...
            X