Tomi: Zeile aus Ausgabe "greppen" ?

Hey Leute!

Gibt es eine Möglichkeit aus einer Ausgabe, bzw einen text irgentwie eine entsprechende zeile zu suchen die immer mit COUNTRY: beginnt und mir das auszugeben was dahinter steht?

wäre voll geil!

Danke schonmal
l.g. Tomi

  1. Lieber Tomi,

    Gibt es eine Möglichkeit aus einer Ausgabe, bzw einen text irgentwie eine entsprechende zeile zu suchen die immer mit COUNTRY: beginnt und mir das auszugeben was dahinter steht?

    ja, die gibt es.

    wäre voll geil!

    Das ist es.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hi Felix

      ja, die gibt es.

      Leider hab ich keine Ahnung wie ich das hier anwenden soll...

      <?php  
        $domain=strtolower($domain);  
        echo "";  
        echo "<blockquote>\n";  
        echo "<pre>\n";  
        flush();  
        $server="whois.ripe.net";  
        $IP=gethostbyname($domain);  
        if(!$IP) $IP==$domain;  
        echo "Verbinde zu $server:43...<br>\n";  
        $fp=@fsockopen($server,43,&$errno,&$errstr,15);  
        if(!$fp)  
        {  
          echo "Verbindung zu $server:43 konnte nicht hergestellt werden.<br>\n";  
          echo "$errno: $errstr<br>\n";  
          return false;  
        }else{  
          echo "Verbunden mit $server:43 hergestellt, sende Anfrage...<br>\n";  
          echo "(IP/Domain: $IP)<br>\n";  
          fputs($fp,"$IP\r\n");  
          while(!feof($fp))  
          {  
            $asds = fgets($fp,256);  
            echo $asds;  
          }  
          fclose($fp);  
          echo "Verbindung beendet.<br>\n";  
        }  
        echo "</pre>\n";  
      ?>  
      
      

      Von der Ganzen whois ausgabe will ich jetzt aber eigentlich nur das hinter Country: haben, wie mach ich das also hier in der schleife?

      Danke schonmal

      1. Moin allerseits,

        Auskommentiert kann man mit deinem Script viel mehr anfangen.

        Schreib einfach eine Funktion, die du dort aufrufst.

        Die Funktionen könnte dann entweder die bereits erwähnte REGEX verwenden, oder du könntest so etwas basteln:

          
        function getSpecialLines($inputtext,$linestart)  
        {  
          
           $lines = explode($inputtext,"\n");  // Eingabetext in einzelne Zeilen zerlegen  
           $i = 0;  
           foreach ($lines as $number=>$line) // Für jede Zeile  
           {  
              if (strpos(" ".$line[$number],$linestart)) // Wenn Zeile mit $linestart enthält  
              {  
                 $output[$i] = $line[$number]; // Zeile dem Output-Array anfügen  
                 $i++;  
              }  
           }  
           return $output; // Output-Array zurückgeben  
          
        }  
        
        

        Diesen Code kannst du nun anpassen. Schau in dem Befehlsverzeichnis von www.selfphp.de nach.

        Grüße, JN

        --
        ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
        http://www.johny7.de
        1. Hello,

          Da hat wohl einer schon mit PHP2 oder PHP3 gearbeitet? :-))

            
          function getSpecialLines($inputtext,$linestart)  
          {  
            
              $lines = explode($inputtext,"\n");    // Eingabetext in einzelne Zeilen zerlegen  
            
              foreach ($lines as $number => $line)  // Für jede Zeile  
              {  
                  if (false !== ($pos = strpos($line,$linestart)) // Wenn Zeile $linestart enthält  
                  {  
                      $output[$number]['line'] = $line;           // Text der Zeile dem Output-Array anfügen  
                      $output[$number]['pos']  = $pos;            // Position des Treffers  
                  }  
              }  
              return $output; // Output-Array zurückgeben  
          }  
            
          ## for debug use  
          echo "<pre>\r\n";  
          echo htmlspecialchars(print_r($output,1));  
          echo "</pre>\r\n";  
            
          
          > 
          
          

          konnte es mir nicht verkneifen, da ein paar Änderungsvorschläge einzubauen und einen Fehler raus, auch wenn Dein Code schon pfiffig war.

          Liebe Grüße aus dem Cyberspace

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hello,

            .. und auch Fehler einzubauen ... ;-)

              
            function getSpecialLines($inputtext,$linestart)  
            {  
                $lines = explode($inputtext,"\n");    // Eingabetext in einzelne Zeilen zerlegen  
              
                foreach ($lines as $number => $line)  // Für jede Zeile  
                {  
                    if (false !== ($pos = strpos($line,$linestart))) // Wenn Zeile $linestart enthält  
                    {  
                        $output[$number]['line'] = $line;            // Text der Zeile dem Output-Array anfügen  
                        $output[$number]['pos']  = $pos;             // Position des Treffers  
                    }  
                }  
                return $output; // Output-Array zurückgeben  
            }  
              
            $output = getSpecialLines($inputtext,$linestart);  
              
            ## for debug use  
            echo "<pre>\r\n";  
            echo htmlspecialchars(print_r($output,1));  
            echo "</pre>\r\n";  
              
            
            > 
            
            

            Liebe Grüße aus dem Cyberspace

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Moin allerseits,

              Hello,

              .. und auch Fehler einzubauen ... ;-)

              Tom vom Berg

              Vielen Dank, war interessant. Habe schon lange nach einem Not-Vergleich gesucht, der die Datentypen berücksichtigt. Man könnte natürlich noch kontrollieren, ob der gesuchte Text am Zeilenanfang steht

                
              if (0 === strpos(...))  
              
              

              Grüße, JN

              --
              ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
              http://www.johny7.de
            2. Moin allerseits,

              | if (false !== ($pos = strpos($line,$linestart))) // Wenn Zeile $linestart enthält

              Meinst du wirklich, die Zuweisung $pos = strpos() wird _nicht_ immer true liefern?

              Grüße, JN

              --
              ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
              http://www.johny7.de
              1. Hello,

                | if (false !== ($pos = strpos($line,$linestart))) // Wenn Zeile $linestart enthält

                Meinst du wirklich, die Zuweisung $pos = strpos() wird _nicht_ immer true liefern?

                Ja, ich meine, dass diese Zuweisung im Falle des Nichtfindens der gesuchten Zeichenkette spätestens ab PHP 4.x ein qualifiziertes false liefert. Darum wird es auch nicht mit dem '!=' ungleich-Operator, sondern mit dem '!==' nicht-identisch-Operator überprüft.

                PHP arbeitet hier "mehrschichtig". Es kann sowohl der Wert in der Variable, als auch deren Typ überprüft werden. Ich prüfe hier auf ein boolesches false.

                http://www.php.net/manual/en/language.operators.comparison.php

                Seit es diese Vergleichsmöglichkeit gibt und die Funktionen fast durchgänguig auch den Rückgabewert boolesch false kennen, braucht man solche Tricks, wie das Voranstellen eines Leerzeichens nicht mehr, auch wenn er mir sehr gefallen hat :-)

                Liebe Grüße aus dem Cyberspace

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de