I guess this would be the correct list to post this on, but I have an idea
for a function that I think would be very handy to users having to deal with
CSV data. Basically, I've had to write a version of the explode() function,
but have it pay attention to values that are wrapped in another character.
For example:

the delimiter is:  ,
and the wrapper is a: "

the function would work as such:

"this is some text","we can have a bunch of them","but, gotta, watch, out
for those commas inside"

it would return:

"this is some text"
"we can have a bunch of them"
"but, gotta, watch, out for these commas inside"

below is the PHP function I have developed:

/**
 *  Does an explode but pays attention to the delimeter.
 *
 *  @param $splitter - string - required delimeter to split on
 *  @param $wrap - string - required string to wrap text areas
 *  @param $rest - string - required data to explode
 *
 *  @return array - exploded array
 */
function csv_explode($splitter, $wrap, $rest)
{
    $instring = false;
    $field = '';
    $ret = array();
    while ($rest)
    {
        $first = substr($rest, 0, 1);
        $rest = substr($rest, 1);
        if ($first == $wrap)
        {
            $instring = (!$instring) ? true : false;
        }
        if (($first == $splitter) && !$instring)
        {
            $ret[] = $field;
            $field = '';
        }
        else
        {
            if ($first != $wrap)
            {
                $field .= $first;
            }
        }
    }
    $ret[] = $field;
    return($ret);
}

If I knew C, I would try to port this to a PHP myself, but I don't. I was
just hoping someone else would. :)

Thanks.

-Justin Plock



-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to