Thanks Justin. Works like a charm
vp
On Wed, 23 Jun 2004 08:48:57 -0700, Justin Patrin
<[EMAIL PROTECTED]> wrote:
>
>
> V Patel wrote:
>
> > I have a csv string. But the string also contains other strings with commas.
> >
> > Explode is not working with this kind of string. For example,
> >
> > 1,2,3,"this string gets parsed , at the comma"
> >
> > Result of explode(",",string) is
> > 1
> > 2
> > 3
> > this string gets parsed
> > at the comma
> >
> > But what I want is
> > 1
> > 2
> > 3
> > this string gets parsed , at the comma
> >
> > I am not fluent with regular expressions. If anybody could help.
> >
> > Thanks,
> > Vp
>
> Here's a funciton I cooked up to deal with this:
>
> <?php
> /**
> * does a regular split, but also accounts for the deliminator to be
> within quoted fields
> * for example, if called as such:
> * splitQuoteFriendly(',', '0,1,2,"3,I am still 3",4');
> * it will return:
> * array(0 => '0',
> * 1 => '1',
> * 2 => '2',
> * 3 => '"3,I am still 3"',
> * 4 => '4');
> * @param string deliminator to split by
> * @param string text to split
> * @param string text which surrounds quoted fields (defaults to ")
> * @return array array of fields after split
> */
> function splitQuoteFriendly($delim, $text, $quote = '"') {
> $strictFields = explode($delim, $text);
> for($sl = 0, $l = 0; $sl < sizeof($strictFields); ++$sl) {
> $fields[$l] = $strictFields[$sl];
> $numQuotes = 0;
> while(fmod($numQuotes += substr_count($strictFields[$sl], $quote),
> 2) == 1) {
> ++$sl;
> $fields[$l] .= $delim.$strictFields[$sl];
> }
> ++$l;
> }
>
> return $fields;
> }
>
> ?>
>
> Just do a splitQuoteFriendly("\n", $csv), then loop through the
> resulting array and do splitQuoteFriendly(',', $line).
>
> --
> paperCrane <Justin Patrin>
>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php