#25781 [Opn->Bgs]: strpos doesn't know if the file passed EOF

From: 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

« previous php.bugs (#48665) next »