Parsing a csv string

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
jolinar
Forum Commoner
Posts: 61
Joined: Tue May 24, 2005 4:24 pm
Location: in front of computer

Parsing a csv string

Post by jolinar »

This is a topic related to the HTML writer I posed a question earlier. The etup I am using for tags is a number of functions for the following tags:

1) Single Tags (like <br/>)
2) Closeable tags (<table> </table>

And plain text output

Some some tags need parameters and some dont so what I was thinking about using is this

"<" as a hard coded output "/>\n" or ">\n" hard coded with the name of the tag supplied as a parameter to the function and the tags parameters supplied as a comma seperated string "id,padder,class,red". I was wondering if there was an easy way to parse the string and convert it to the output expected in XHTML (id='padder' class='red')

Does anyone have any thoughts?
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

Hmm, if I understand your question:

Code: Select all

$parameters="id,padder,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
    if (count($subPars)==1)
       $attrib.="($subPars[0]}='{$subPars[0]}' "; // allow abbreviated checked="checked"
    else
       $attrib.="{$subPars[0]='{$subPars[1]}' ";
}
echo $attrib;
1df4dc0]
$parameters="id,padder,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib=&quote;&quote;;
for($i=0;$i&lt;$numPairs;$i++)
{
$attrib.=&quote;{$parsї$i*2]}='{$parsї$i*2+1]}' &quote;;
}
echo $attrib;


One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
    if (count($subPars)==1)
       $attrib.="($subPars[0]}='{$subPars[0]}' &qer,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
  amp;quote;,$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
    if (count($subPars)==1)
       $attrib.=xplode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
nd your question:

Code: Select all

$parameters=&quote;id,padder,class,red&quote;;
$pars=explode(&quote;,&quote;,$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die(&quote;Odd number of parameters&quote;);
$numPairs = $numPars/2;
$attrib=&quote;&quote;;
for($i=0;$i&lt;$numPairs;$i++)
{
    $attrib.=&quote;{$pars&#1111;$i*2]}='{$pars&#1111;$i*2+1]}' &quote;;
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters=&quote;id,padder;class,red&quote;;
$pars=explode(&quote;;&quote;,$paremters);
$numPars = count($pars);
$attrib=&quote;&quote;;
for($i=0;$i&lt;$numPars;$i++)
{
    $subPars=explode(&quote;,&quote;,$pars&#1111;$i]); 
    if (count($subPars)==1)
       $attrib.=&quote;($subPars&#1111;0]}='{$subPars&#1111;0]}' &quote;; // allow abbreviated checked=&quote;checked&quote;
    else
       $attrib.=&quote;{$subPars&#1111;0]='{$subPars&#1nd your question:

Code: Select all

$parameters="id,padder,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
    if (count($subPars)==1)
       $attrib.="($subPars[0]}='{$subPars[0]}' "; // allow abbreviated checked="checked"
    else
       $attrib.="{$subPars[0]='{$subPars[1]}' ";
}
echo $attrib;
p;quote;;
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
$subPars=explode(",",$pars[$i]);
if (count($subPars)==1)
$attrib.="($subPars[0]}='{$subPars[0]}' "; // allow abbreviated checked="checked"
else
$attrib.="{$subPars[0]='{$subPars[1]}' ";
}
echo $attrib;
unt($subPars)==1)
$attrib.="($subPars[0]}='{$subPars[0]}' "; // allow abbreviated checked="checked"
else
$attrib.="{$subPars[0]='{$subPars[1]}' ";
}
echo $attrib;
der,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
$attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;


One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=exp;;
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib
$parameters="id,padder,class,red";
$pars=explode(",",$paremters);
$numPars = count($pars);
if (($numPars%2)!=0) die("Odd number of parameters");
$numPairs = $numPars/2;
$attrib="";
for($i=0;$i<$numPairs;$i++)
{
    $attrib.="{$pars[$i*2]}='{$pars[$i*2+1]}' ";
}
echo $attrib;
One slight improvement I'ld suggest would be something more like:

Code: Select all

$parameters="id,padder;class,red";
$pars=explode(";",$paremters);
$numPars = count($pars);
$attrib="";
for($i=0;$i<$numPars;$i++)
{
    $subPars=explode(",",$pars[$i]); 
    if (count($subPars)==1)
       $attrib.="($subPars[0]}='{$subPars[0]}' "; // allow abbreviated checked="checked"
    else
       $attrib.="{$subPars[0]='{$subPars[1]}' ";
}
echo $attrib;
User avatar
jolinar
Forum Commoner
Posts: 61
Joined: Tue May 24, 2005 4:24 pm
Location: in front of computer

Post by jolinar »

Thats it, thanks nielsene :D
Post Reply