Re: Help Needed with CSV & PHP

From: Date: Tue, 04 Jul 2000 21:38:03 +0000
Subject: Re: Help Needed with CSV & PHP
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-4823@lists.php.net to get a copy of this message
PHP's strings are fully binary safe, so you could actually replace the user-supplied : with a \0 and then change them back afterwards. Presumably there is no way for the user to type ascii code 0 into a text field. ie. $new = str_replace(':',chr(0),$old); -Rasmus On Tue, 4 Jul 2000, Jeff Gannaway wrote: > At 05:00 PM 7/4/00 -0400, Mike Gifford wrote: > >How will this avoid the problem of confusing what separates the > >different elements. > > > >$pizza = "$piece1:$piece2:$piece3:$piece4:$piece5:$piece6"; > >$pieces = explode(":", $pizza); > > > >Will still be confused if a user enters in a : in $piece2 won't it? > > You're right. I just tried this: > > <? > $piece1 = "Pepporoni:Sausage"; > $piece2 = "mushroom"; > $piece3 = "cheese"; > $piece4 = "bacon:onion:green pepper"; > $piece5 = "thick crust"; > $piece6 = "thin:crispy"; > $pizza = "$piece1:$piece2:$piece3:$piece4:$piece5:$piece6"; > $pieces = explode(":", $pizza); > print sizeof($pieces); > ?> > > and it came up with 10 elements in the $pieces array. > > Here's the long, icky way I've dealt with similar problems with a Perl > script long ago... > > Substitue ever occurence of : in the original variables with something > whacky that you'd expect no human being to EVER type in into an INPUT box > like: > > <? > // First replace : with whacky code phrase > $piece1 = str_replace(":", "ColonColonColonColon", $piece1); > $piece2 = str_replace(":", "ColonColonColonColon", $piece2); > $piece3 = str_replace(":", "ColonColonColonColon", $piece3); > $piece4 = str_replace(":", "ColonColonColonColon", $piece4); > $piece5 = str_replace(":", "ColonColonColonColon", $piece5); > $piece6 = str_replace(":", "ColonColonColonColon", $piece6); > > // Convert to array $pieces[] > $pizza = "$piece1:$piece2:$piece3:$piece4:$piece5:$piece6"; > $pieces = explode(":", $pizza); > > // Re-replace code phrase with : > $PiecesSize = sizeof($pieces); > $Counter = 0; > while ($Counter < $PiecesSize) > { > $pieces[$Counter] = str_replace("ColonColonColonColon", ":", > $pieces[$Counter]); > $Counter++; > } > > // Now you have a 6-element array with their original : > ?> > > The only wierd thing is that there is still a chance some dork will enter > ColonColonColonColon or whater your whacky code phrase is and the end > result is that it got turned into a : > > If you were REALLY concerned about that, you could check for occurences of > your code phrase before rplacing the : with it and if it does exist, then > add a varaible to "mark" which ones to ignore. > > Out of breath, > Jeff Gannaway > >

« previous php.general (#4823) next »