Zeile aus Ausgabe "greppen" ?
Tomi
- php
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
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.
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
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
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
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
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
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
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