Bug #18127 Updated: explode not exploding

From: Date: Wed, 03 Jul 2002 07:30:13 +0000
Subject: Bug #18127 Updated: explode not exploding
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-12941@lists.php.net to get a copy of this message
ID: 18127 Updated by: derick@php.net Reported By: BlackMagic@computer.org -Status: Closed +Status: Bogus Bug Type: Strings related Operating System: Linux PHP Version: 4.1.2 New Comment: The strpos manual page says: "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character." and as 0x0D is clearly not a string, but a number it is applied as the ordinal number here. (Please leave the status as bogus, this is the state for non-bugs). Derick Previous Comments: ------------------------------------------------------------------------ [2002-07-03 03:23:06] BlackMagic@computer.org Derick, Thank you for the prompt response, and a fix that works. Without wanting to draw the matter out, there is an inconsistency in the way explode() works vis-a-vis strpos(). The manual entry for strpos() also says the item being searched for must be a string, but $x = strpos($address, 0x0D, $y); works fine. ------------------------------------------------------------------------ [2002-07-03 02:50:33] derick@php.net From the manual: explode -- Split a string by string Description array explode ( string separator, string string [, int limit]) Your separator is 0x0D which is 13. Becuase 13 is not a 'string' it will be converted to the string "13" and aas there is no "13" in your string, it won't be exploded. User the following line instead: explode ("\n", $address); Derick ------------------------------------------------------------------------ [2002-07-03 02:31:10] BlackMagic@computer.org I'm using explode() to parse a street address from a web form looking for 0x0D characters, eg, $x = explode(0x0D, $address); The entire address ends up in $x, no matter how many line feeds it contains. The same thing happens with this code: $linefeed = 0x0D; $x = explode($linefeed, $address); This works, returning the correct value in $lines: $y = $lines = 0; $x = 1; while ($x) { $x = strpos($address, 0x0D, $y); $y = $x + 1; $lines++; } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=18127&edit=1

« previous php.bugs (#12941) next »