I am using stream_get_line to store some php output in a variable, while I’m running a telnet session via fsockopen.
However, my second server does not run PHP5, which is disabled the ability to use stream_get_line. Is there any alternative for PHP 4.3?
I heard that fgets is almost the same, but I don’t seem to get it to work exactly like stream_get_line.
Code:
...
# opening connection
$fp = @fsockopen($ip, 23, $errno, $errstr, 8);
# loggin in
fputs($fp, "$user\r");
usleep(250000);
fputs($fp, "$password\r");
# getting information
fputs($fp, "show info\n");
usleep(250000);
fputs($fp, "show info 2\n");
usleep(250000);
fputs($fp, "show info 3\n");
usleep(250000);
fputs($fp, "show info 4\n");
usleep(250000);
fputs($fp, "?\n");
$content = stream_get_line($fp, 0, "?");
$contentvalues = array(
1 => substr($content, 130, 3),
2 => substr($content, 180, 3)
);
fclose($fp);
...
(I am storing specific parts of my output in the $contentvalues variable.)
From the docs:
From the comments:
There’s also some dithering about which function is faster, but it seems to be dependant on the version of PHP, the day of the week, and what the commenter had for dinner the previous night.
edit
Judging by your response to Steffen’s answer you’re hung up on the fact that
fgets()does not take a third parameter as a delimiter. Applying a basic input loop and checking the string will get you there. Also, in Steffen’s defense, you were never quite clear on in your question, stating only that it doesn’t "work exactly like stream_get_line".Also, even with
stream_get_line()you should be using a loop to get the input as alengthparameter or0does not mean "unlimited", but rather will use one of PHP’s defaults which is 8192 bytes.