Page 1 of 1

Php parse

Posted: Mon Aug 03, 2009 8:52 am
by tkojemile
Hi,

I would like to retrieve some values from string:
this example:

$string = "one,2009-08-07[2009-08-05];two,2009-08-07[2009-08-05]";

-> in this string you can see string one(one,2009-08-07[2009-08-05]) and two(two,2009-08-07[2009-08-05]).
I would need to get something like this

var1[one]=one
var2[one]=2009-08-07
var3[one]=[2009-08-05]

&

var1[two]=one
var2[two]=2009-08-07
var3[two]=[2009-08-05]

I tried to do something like this:

$tok = strtok($string, ";");
$i=1;
while ($tok !== false) {
echo $tok;
$tok= $tok;
$i++;
$tok = strtok(";");

}

and it returns me:
one,2009-08-07[2009-08-05]
two,2009-08-07[2009-08-05]

but when I exit while loop I loose all variables...

thank in advance!

Re: Php parse

Posted: Mon Aug 03, 2009 8:59 am
by jackpf
Push them into an array.

Like:

Code: Select all

$array = array();
while(whatever)
{
array_push($array, 'whatever');
}

Re: Php parse

Posted: Mon Aug 03, 2009 9:11 am
by Mark Baker

Code: Select all

 
$string = "one,2009-08-07[2009-08-05];two,2009-08-07[2009-08-05]";
 
$var1 = $var2 = $var3 = array();
$tmp = explode(';',$string);
foreach($tmp as $value) {
    list($key,$values) = explode(',',$value);
    $var1[$key] = $key;
    list($d1,$d2) = explode('[',$values);
    $var2[$key] = $d1;
    $var3[$key] = '['.$d2;
}
echo '$var1 = ';
print_r($var1);
echo '<br />$var2 = ';
print_r($var2);
echo '<br />$var3 = ';
print_r($var3);
 

Re: Php parse

Posted: Mon Aug 03, 2009 9:32 am
by tkojemile
hi,

thx to both for quick answer!
(Sorry for two posts - my proxy does that sometimes)

Script returns:

$var1 = Array ( [one] => one [two] => two )
$var2 = Array ( [one] => 2009-08-07 [two] => 2009-08-07 )
$var3 = Array ( [one] => [2009-08-05] [two] => [2009-08-05] )

but I could use better:
$var1 = Array ( [one1] => one [one2] => 2009-08-07 [one3] => [2009-08-05])

is there posibility to return exact data;

like

var=one
var=2009-08-07
var=[2009-08-05]

if it is too long to write, I will play myself with code - it is good!

thanks!

Re: Php parse

Posted: Mon Aug 03, 2009 9:45 am
by jackpf
You could instead have a multidimensional array...doing what you want.

Like:

Code: Select all

   list($key,$values) = explode(',',$value);
    list($d1,$d2) = explode('[',$values);
 
    $var[$key] = array($key, $d1, '['.$d2);

Re: Php parse

Posted: Mon Aug 03, 2009 10:12 am
by tkojemile
Hi,

thanks a lot!

I got it finaly :)

Code: Select all

$string = "one,2009-08-07[2009-08-05];two,2009-08-07[2009-08-12]";
  $i=1;
 $var1 = $var2 = $var3 = array();
 $tmp = explode(';',$string);
 foreach($tmp as $value) {
     list($key,$values) = explode(',',$value);
     $var1[$key] = $key;
     list($d1,$d2) = explode('[',$values);
     $var2[$key] = $d1;
     $var3[$key] = '['.$d2;
     $var[$key] = array($key, $d1, '['.$d2);
     $var_out[$i] = $var[$key];
     $i++;
 }
 
 echo '<br />$Var_Out = ';
 print_r($var_out[1][1]);
 echo '<br />$mutko = ';
 print_r($var_out[2][1]);
and output at final I get what I needed! :)

$Var_Out = 2009-08-07
$Var_Out = 2009-08-07

:)

thank once again!

Re: Php parse

Posted: Mon Aug 03, 2009 10:14 am
by jackpf
Cool :)