#25781 [Opn->Bgs]: strpos doesn't know if the file passed EOF
| From: | jay@php.net | Date: | Tue, 07 Oct 2003 19:46:01 +0000 |
| Subject: | #25781 [Opn->Bgs]: strpos doesn't know if the file passed EOF | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-48665@lists.php.net to get a copy of this message | ||
ID: 25781
Updated by: jay@php.net
Reported By: imscorpio at hotmail dot com
-Status: Open
+Status: Bogus
Bug Type: Filesystem function related
Operating System: Windows 2000 Pro
PHP Version: 4.3.3
New Comment:
"$my_position = int;" probably isn't doing what you're
expecting it to do. It's setting $my_position to the
string "int", not making it an integer. (Use a var_dump()
and you'll see what I'm talking about.)
A for loop or a foreach loop would probably be better in
this case anyway, breaking out of it if necessary when
strpos() returns false.
J
Previous Comments:
------------------------------------------------------------------------
[2003-10-07 15:04:11] imscorpio at hotmail dot com
a
------------------------------------------------------------------------
[2003-10-07 15:02:48] imscorpio at hotmail dot com
Description:
------------
If you loop a file line by line and searching with strpos() it doesn't
know if the file has ended, reached EOF. It will contiue untill
crash...
Reproduce code:
---------------
//scritp.php
<?php
$my_position = int;
$haystack = $file_line[$my_position];
$position = strpos ( $haystack, $needle );
while ($position === false){
$my_position++;
$haystack = $file_line[$my_position];
$position = strpos ( $haystack, $needle );
}
?>
Expected result:
----------------
Nothing to read from or the $haystack has passed the EOF.
Actual result:
--------------
Fatal error: Maximum execution time of 30 seconds exceeded in
script.php on line 9
Any line within the while()
during 30sec it can go up to 65.000 - 70.000 lines
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=25781&edit=1