Ankündigung

Einklappen
Keine Ankündigung bisher.

zerstückeln eines strings

Einklappen

Neue Werbung 2019

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

  • zerstückeln eines strings

    Hallo,

    ich habe einen string der folgendermaßen aussieht:

    Code:
    server_id=1 server_name=m4c4br3's place | #reihe5.de server_platform=Linux server_welcomemessage=-= welcome to my server =- visit http://reihe5.de server_webpost_linkurl= server_webpost_posturl= server_password=1 server_clan_server=1 server_udpport=8767 server_maxusers=35 server_allow_codec_celp51=0 server_allow_codec_celp63=0 server_allow_codec_gsm148=0 server_allow_codec_gsm164=0 server_allow_codec_windowscelp52=0 server_allow_codec_speex2150=-1 server_allow_codec_speex3950=-1 server_allow_codec_speex5950=-1 server_allow_codec_speex8000=-1 server_allow_codec_speex11000=-1 server_allow_codec_speex15000=-1 server_allow_codec_speex18200=-1 server_allow_codec_speex24600=-1 server_packetssend=7024813 server_bytessend=1506872761 server_packetsreceived=5159731 server_bytesreceived=862014289 server_uptime=4822236 server_currentusers=0 server_currentchannels=19 server_bwinlastsec=0 server_bwoutlastsec=0 server_bwinlastmin=0 server_bwoutlastmin=0 OK
    nun möchte brauche ich eine verschachtelte schleife, welche mir nacheinander alles ausgibt was mit server_ anfängt. Die Variable wo das alles drinn steht heisst $result.

    Bräuchte hier mal ein kleine Bespiel um das Ganze zu realisieren.

    Im script soll es hinterher folgendermaßen ausgegeben werden:

    Code:
    server_id=1
    server_name=m4c4br3's place | #reihe5.de
    server_platform=Linux
    server_welcomemessage=-= welcome to my server =- visit http://reihe5.de
    server_webpost_linkurl=
    server_webpost_posturl=
    server_password=1
    server_clan_server=1
    server_udpport=8767
    server_maxusers=35
    server_allow_codec_celp51=0
    server_allow_codec_celp63=0
    server_allow_codec_gsm148=0
    server_allow_codec_gsm164=0
    server_allow_codec_windowscelp52=0
    server_allow_codec_speex2150=-1
    server_allow_codec_speex3950=-1
    server_allow_codec_speex5950=-1
    server_allow_codec_speex8000=-1
    server_allow_codec_speex11000=-1
    server_allow_codec_speex15000=-1
    server_allow_codec_speex18200=-1
    server_allow_codec_speex24600=-1
    server_packetssend=7024813
    server_bytessend=1506872761
    server_packetsreceived=5159731
    server_bytesreceived=862014289
    server_uptime=4822559
    server_currentusers=0
    server_currentchannels=19
    server_bwinlastsec=0
    server_bwoutlastsec=0
    server_bwinlastmin=0
    server_bwoutlastmin=0
    OK
    am besten noch jede einzelne Zeile in ein Array shreiben um später darauf zurück greifen zu können.

    Danke schon mal im vorraus.

    Gruß m4c4br3

  • #2
    ist dein string in einer einzigen zeile ? oder sind da umbrüche zwischen ??

    Kommentar


    • #3
      keine zeilenumbrüche.... das ist eine einzige zeile...

      Kommentar


      • #4
        PHP-Code:
        <?php
        preg_match_all
        ('=server_(.*?)=(*.?)(\s*server|\s*)',$result,$hits);
        ?>
        jetzt kannste dir mit var_dump den inhalt von $hits ausgeben lassen

        Kommentar


        • #5
          Ohne RegEx:

          PHP-Code:
          <?php

          $StatX
          =explode(' server',$StatusStr);

          foreach (
          $StatX as $S)
          {

              echo 
          'server'.$S.'
          '
          ;

          }

          ?>
          ("$StatusStr" beinhaltet den Gesamtstring)
          [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

          Kommentar


          • #6
            sobald ich das einbau kommt folgender fehler:

            Warning: Unknown modifier '(' in /srv/www/htdocs/web4/html/ts2/test.php on line 17

            Kommentar


            • #7
              theoretisch muss der sich doch nur jedes server_ raussuchen und 8 Zeichen davor einen Zeielnumbruch machen... oder ? nur wie macht man das ?

              Kommentar


              • #8
                Mal die Lösung ohne RegEx probiert ?

                Was steht in Zeile 17 und davor? Ist das die Zeile mit dem "preg_match_all()" ?

                Hast du den Gesamttext einer Variablen zugewiesen? Wenn ja (davon geh'ich mal aus), wie ? Der Text beinhaltet ein ' , was zu Problemen führen könnte, deswegen sollte die Zuweisung mit " erfolgen.
                [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                Kommentar


                • #9
                  Am besten poste ich mal den kompletten code... evtl kommt dann mehr klarheit rein...

                  PHP-Code:
                  <?php
                  $svip 
                  "62.141.36.64";
                  $tsport "51234";
                  $svport "8767";
                  $fp fsockopen($svip$tsport$errno$errstr);
                  $listinfo "si";
                  if (!
                  $fp)
                      {
                      echo 
                  "Fehler: $errno - $errstr
                  \n"
                  ;
                      }
                  else
                      {
                      
                  fputs($fp$listinfo." ".$svport."\n");
                      
                  $serverinfo fscanf($fp"%s\n");
                      
                  $result fread($fp2048);
                      
                  //echo $result;
                      //preg_match_all('=server_(.*?)=(*.?)(\s*server|\s*)',$result,$hits);
                      //var_dump($hits);
                      
                  $StatX explode(' server_',$result);
                      foreach (
                  $StatX as $S)
                          {
                             echo 
                  'server'.$S."
                  \n"
                  ;
                          }

                      }
                  fputs($fp"quit");
                  fclose($fp);

                  ?>

                  Kommentar


                  • #10
                    Hmm ...

                    Was für einen Fehler bekommst du nun? Immer noch "Warning: Unknown modifier ..." oder sowas "parse error, unexpected T_STRING ..." ?
                    [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                    Kommentar


                    • #11
                      die meldung bekomm ich wenn ich es mit preg_match_all mache. nach deiner idee listet er mir immer noch den ganzen string ohne zeilenumbruch auf bzw. setzt nur das wort server einmal vor allem was bei echo 'server'.$S."..... steht

                      Kommentar


                      • #12
                        Hab den Code den du zuletzt gepostet hast mal ausprobiert - läuft tatdellos ...! Wo ist das Problem ?
                        [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                        Kommentar


                        • #13
                          der gibt zwar alles wieder... aber nicht untereinander sonder in einer reihe... bzw. will ich hinterher alles in ein array packen und hinterher einzeln auslesen können....

                          z.B. wenn ich mir nur server_name=m4c4br3's place | #reihe5.de anzeigen lassen will oder z.B. wenn ic mir nur server_packetsreceived=5160171 anzeigen lassen will...

                          weil sonst kann ich mir ja direkt die variable $result ausgeben lassen...

                          Kommentar


                          • #14
                            kann jm mal die ausgabe posten?

                            Kommentar


                            • #15
                              Hä ???

                              - explode() schreibt die Einzelteile in das Array "$StatX". Als Separator dient " server".

                              - im foreach-Konstrukt wird jedes ArrayElement in eine separate Zeile geschrieben. (
                              ). Da " server" durch das explode() weggeschnitten wurde, wird es hier wieder drangepappt.

                              Wie bereits gepostet, hab den Code mitlerweile ausprobiert und dat Dingen macht genau das, was du willst ...

                              @spec: als Ausgabe kommt genau das, was der Thread-Starter gerne hätte. Denk dir vor jedem "server" (ausser dem ersten) einen Zeilenumbruch :wink:
                              [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                              Kommentar

                              Lädt...
                              X