textstelle wiedergeben

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

  • textstelle wiedergeben

    hallo,

    ich versuche schon den ganzen morgen aus einem text nur eine
    ganz bestimmte stelle wieder zu geben.

    zb:

    PHP-Code:
    192.168.1.10 - - [27/Jun/2004:13:55:14 +0200"GET /html/bilder/USER.gif HTTP/1.1" 304 -
    192.168.1.10 - - [27/Jun/2004:13:57:10 +0200" HTTP/1.1" 305  -
    192.168.1.10 - - [27/Jun/2004:13:59:12 +0200"" 304 
    nun möchte ich den text von GET bis 305 wiedergeben.

    habe es schon mit
    PHP-Code:
    strpos 
    und
    PHP-Code:
    substr 
    versucht, hat aber nicht das erwünschte ergebnis gebracht.

    mit zeichen zählen geht es glaube ich auch nicht.
    es müßte ihrgendwie mit " zeige mir alles zwischen GET und 305 "
    gemacht werden.

    danke für hilfe.

  • #2
    RegEx mit preg_match

    Kommentar


    • #3
      der RegEx string sollte ungefähr so aussehen /GET.+305/ bei java und asp ist das aufjedenfall so. das .+ steht für alle Zeichen dazwischen.

      Kommentar


      • #4
        ja so ähnlich. Siehe Tutorial-

        Kommentar


        • #5
          Wenn sich jemand mit Regular Expressions beschäftigen will gibt es ein tolles Buch von orily für ungefähr 36€ bein amazon. Ich habe es mir gekauft und es ist absolut geil.

          Kommentar


          • #6
            hallo,

            den string zu finden habe ich schon gemacht.
            PHP-Code:
            if (preg_match ("/GET.+305/i""$zeile")) { 
            .

            aber wie lasse ich mir den text zwischen GET und 305 nun ausgeben.?

            Kommentar


            • #7
              aber wie lasse ich mir den text zwischen GET und 305 nun ausgeben.?
              schau dir mal den syntax von preg_match an ... du kannst die ergebnisse zurückgeben, draufzugreifen ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                http://www.php-resource.de/manual.ph...ion.preg-match

                Das ist die Beschreibung dazu aus dem PHP-Handbuch.

                Kommentar


                • #9
                  hallo,

                  ich habe es so gemacht.
                  sind andere werte als oben!

                  die ausgabe von ipconfig ist:

                  Ethernetadapter "LAN-Verbindung":
                  Verbindungsspezifisches DNS-Suffix:
                  IP-Adresse. . . . . . . . . . . . : 192.168.1.10
                  Subnetzmaske. . . . . . . . . . . : 255.255.255.0
                  Standardgateway . . . . . . . . . : 192.168.1.1

                  mein script:

                  PHP-Code:
                   exec("cmd /c ipconfig"$wert$result);
                  foreach(
                  $wert as $zeile) {
                  if (
                  preg_match ("/IP-Adresse.+1.1/i""$zeile",$ergbn)) {
                  foreach(
                  $ergbn as $zeilen) {
                  echo 
                  $zeilen;
                  }} 
                  nun dachte ich , es wird ales zwischen IP-Adresse und 192.168.1.1
                  ausgegeben.
                  doch die ausgabe ist:

                  IP-Adresse. . . . . . . . . . . . : 192.168.1.1

                  was mache ich denn nur falsch?

                  Kommentar


                  • #10
                    nun dachte ich , es wird ales zwischen IP-Adresse und 192.168.1.1
                    nein, es wird als match alles zurückgegeben, das matched
                    was mache ich denn nur falsch?
                    mit klammern () kannst du matches 'abtrennen'. schau dir das match-array am besten dann mal mit print_r an.

                    EDIT:
                    du brauchst dafür keine schleifen! ach ja, der regexp sieht auch etwas seltsam aus.
                    Zuletzt geändert von derHund; 27.06.2004, 15:27.
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      hallo,
                      verstehe ich nicht ganz.
                      was meinst du mit "mit klammern () kannst du matches 'abtrennen'."?

                      Kommentar


                      • #12
                        hallo,

                        habe es nun so gemacht:

                        $zeile ="Ethernetadapter LAN-Verbindung:
                        Verbindungsspezifisches DNS-Suffix:
                        IP-Adresse. . . . . . . . . . . . : 192.168.1.10
                        Subnetzmaske. . . . . . . . . . . : 255.255.255.0
                        Standardgateway . . . . . . . . : 192.168.1.1";
                        PHP-Code:
                        preg_match('/Ethernetadapter(.*?)1.1$/s'$zeile$ergn);
                        echo 
                        $ergn[0]; 
                        klappt auch mit der ausgabe.
                        nur wenn ich statt des statischen wertes $zeile
                        PHP-Code:
                        exec("cmd /c ipconfig"$wert$result);
                        foreach(
                        $wert as $zeile) {
                        preg_match('/Ethernetadapter(.*?)1.1$/s'$zeile$ergn);
                        echo 
                        $ergn[0];

                        einsetze bekomme ich keine ausgabe.

                        ?????

                        Kommentar


                        • #13
                          Ist ja auch kein Wunder, beim ersten beispiel enthällt $zeile den gesammten Text, bei der zweiten immer nur eine Zeile, daher passt der regexp beim zweiten nicht!
                          Die Musikreview Seite

                          hi, i'm a signature virus. copy me into your signature to help me spread.

                          Kommentar


                          • #14
                            hallo,
                            bin jetzt gleich am ende.

                            wie kann ich das nur hinbekommen???

                            hilfe hilfe

                            Kommentar


                            • #15
                              zum beispiel in dem du $wert anstatt mit einer foreach schleife zu durchlaufen einfach in _einen_ string packst, z.b. implode()
                              Die Musikreview Seite

                              hi, i'm a signature virus. copy me into your signature to help me spread.

                              Kommentar

                              Lädt...
                              X