Php parse

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
tkojemile
Forum Newbie
Posts: 5
Joined: Mon Aug 03, 2009 8:37 am

Php parse

Post 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!
User avatar
jackpf
DevNet Resident
Posts: 2119
Joined: Sun Feb 15, 2009 7:22 pm
Location: Ipswich, UK

Re: Php parse

Post by jackpf »

Push them into an array.

Like:

Code: Select all

$array = array();
while(whatever)
{
array_push($array, 'whatever');
}
Mark Baker
Forum Regular
Posts: 710
Joined: Thu Oct 30, 2008 6:24 pm

Re: Php parse

Post 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);
 
tkojemile
Forum Newbie
Posts: 5
Joined: Mon Aug 03, 2009 8:37 am

Re: Php parse

Post 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!
User avatar
jackpf
DevNet Resident
Posts: 2119
Joined: Sun Feb 15, 2009 7:22 pm
Location: Ipswich, UK

Re: Php parse

Post 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);
tkojemile
Forum Newbie
Posts: 5
Joined: Mon Aug 03, 2009 8:37 am

Re: Php parse

Post 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!
User avatar
jackpf
DevNet Resident
Posts: 2119
Joined: Sun Feb 15, 2009 7:22 pm
Location: Ipswich, UK

Re: Php parse

Post by jackpf »

Cool :)
Post Reply