Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Like Tree1Danke
  • 1 Beitrag von timestamp
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
245
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Radanua Radanua ist offline Mitglied Bronze
    Registriert seit
    Aug 2010
    Ort
    Bottrop (NRW)
    Beiträge
    36
    Hallihallo liebe Leutchen,
    ich melde mich mal wieder aus dem Ruhrpott mit einer neuen Frage.. !..
    Ich habe derzeit vor meine Teamspeak 3 Server per PHP zu Erstellen.
    Alles funktioniert soweit ohne Probleme, jedoch würde ich gerne die Ausgabe anpassen, die nach Erstellung des Servers vom Telnet Server übergeben wird.

    Beispiel Ausgabe:
    sid=2 token=JWzbg0XauLeIweBH3JAg+pa8B92lR8jXgUvTJvnS virtualserver_port=9988

    Jetzt möchte ich jedoch 3 Variable daraus entstehen lassen..
    Erste Variable soll der Wert nach SID= sein (2)
    Zweite Variable der Wert nach token= (JWzbg0XauLeIweBH3JAg+pa8B92lR8jXgUvTJvnS)
    Dritte Variable der Wert nach virtualserver_port0 (9988)

    Wie kann ich sowas realisieren? Habe mit explode etc. etwas experimentiert aber wirklich funktioniert hat da gar nichts.

    Hoffe auf eure Hilfe
     
    Lebe und denke nicht an Morgen.

  2. #2
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    Grüße,

    ich hab da mal was vorbereitet .
    Code-Kritik bezüglich der Übersicht oder anderen Dingen ist gerne erwünscht.
    Hier also der Code (ein bisschen wirr aber er funktioniert - getestet):

    PHP-Code:
    <?php
    $Zeichenkette 
    "sid=2 token=JWzbg0XauLeIweBH3JAg+pa8B92lR8jXgUvTJvnS virtualserver_port=9988";

    //Zeichenkette zerlegen -> nach sid=, token=, virtualserver_port=
    // --> deren stellen im String rausfinden

    ////////////////1.Variable
    //---> "="
    $V_eins strpos($Zeichenkette"=");
    //-> wann kommt token -> dazwischenliegende Werte = Variable 1
    $tok strpos($Zeichenkette"token");
        
    //-> Variable_1 festlegen
        
    $Länge $tok $V_eins-1;
        
    $Variable_1 substr($Zeichenkette$V_eins+1$Länge);
        
    ////////////////2.Variable
    //wann kommt das 2. Mal "=" vor
    //-> wir wissen,dass das erste immer an 4. Stelle vorkommt
    $V_zwei strpos($Zeichenkette"="4);
    //wann kommt das Leerzeichen vor virtualserver_port
    $Leerzeichen strpos($Zeichenkette" "$V_zwei);
    //Zeichen zwischen dem 2. "=" und dem Leerzeichen-1 ist die 2. Variable
    $Länge $Leerzeichen $V_zwei 1;
    $Variable_2 substr($Zeichenkette$V_zwei+1$Länge);
        
    ////////////////3.Variable
    //virtualserver_port= hat 19 Zeichen -> Leerzeichen+20 plus Länge von 4 für substr ergibt die 3. Variable
    $Variable_3 substr($Zeichenkette$Leerzeichen+204);


    echo
    "Ausgabe::<br><br>V1=$Variable_1<br>V2=$Variable_2<br>V3=$Variable_3";
    ?>
    hab mir dazu mal deine angegebene Zeichenkette geschnappt .

    P.S. bastle derzeit noch an einer eleganteren Lösung -> Priorität hatte erstmal die Funktionalität
     
    Mfg, Alex

    “The function of good software is to make the complex appear to be simple.” (Grady Booch)
    “First, solve the problem. Then, write the code.” (John Johnson)

  3. #3
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Smaragd
    Registriert seit
    May 2010
    Ort
    Haus mit Schornstein
    Beiträge
    1.189
    Elegantere Lösung:
    PHP-Code:
    $str 'sid=2 token=JWzbg0XauLeIweBH3JAg+pa8B92lR8jXgUvTJvnS virtualserver_port=9988';
    $pattern '/sid=(?<sid>\d+) token=(?<token>.+) virtualserver_port=(?<port>\d+)/';
    preg_match($pattern$str$match);
    echo 
    $match['sid'].' - '.$match['token'].' - '.$match['port']; 
     

  4. #4
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    durchaus die wesentlich elegantere Lösung.

    @timestamp: wäre es möglich mir die 2. Zeile deines Codes ein wenig zu erklären?
    Danke und Gruß
     
    Mfg, Alex

    “The function of good software is to make the complex appear to be simple.” (Grady Booch)
    “First, solve the problem. Then, write the code.” (John Johnson)

  5. #5
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Smaragd
    Registriert seit
    May 2010
    Ort
    Haus mit Schornstein
    Beiträge
    1.189
    Stichwort reguläre Ausdrücke (google findet).
    \d+ steht für eine beliebige Anzahl Zahlen, mindestens eine.
    .+ steht für eine beliebige Anzahl jeglicher Zeichen, mindestens eins
    (...) gruppiert ein Ergebnis
    (?<index>) gibt einen assoziativen array eintrag.
    Alex_T bedankt sich. 

Ähnliche Themen

  1. Telnet Ausgabe in Datei speichern
    Von Kilrathy im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 0
    Letzter Beitrag: 11.12.06, 09:44
  2. Antworten: 1
    Letzter Beitrag: 03.04.05, 10:58
  3. trotz Backticks macht telnet Ausgabe nach stdout
    Von Gottox im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 12.01.04, 20:48
  4. telnet
    Von fischli im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 16.08.03, 16:55
  5. Telnet
    Von fungo im Forum Netzwerke
    Antworten: 3
    Letzter Beitrag: 23.08.02, 23:58