par
katagoto » 17 févr. 2009, 17:20
Merci de votre aide,
Il y a un truc de bizarre :
[quoteArray ( [nom] => katagoto [id] => 30 [tab] => Array ( [truc] => much [num] => 26 [0] => 5 [1] => katagoto [tab] => Array ( [0] => ripat [1] => HyWaN [2] => 40 [3] => 45 ) ) )
------------
------------
Array ( [0] => nom [1] => s:8:"katagoto"; [2] => id [3] => i: [4] => 30;tab [5] => a:5:{s:4:"truc";s:4:"much";s:3:"num";i:26;i:0;i:5;i:1;s:8:"katagoto";s:3:"tab";a:4:{i:0;s:5:"ripat";i:1;s:5:"HyWaN";i:2;i:40;i:3;i:45;}} )
Notice: unserialize() [function.unserialize]: Error at offset 0 of 2 bytes in C:\wamp\www\test\session.php on line 10
Array ( [nom] => katagoto [id] => [30;tab] => Array ( [truc] => much [num] => 26 [0] => 5 [1] => katagoto [tab] => Array ( [0] => ripat [1] => HyWaN [2] => 40 [3] => 45 ) ) )
[/quote]
Alors que :
<?php
function decode_session($chaine)
{
$motif = '#([a-z0-9_][a-z0-9_;]+)\|#i';
$vars = preg_split($motif, $chaine, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($vars);
for($i=0; isset($vars[$i]); ++$i)
{
$result[$vars[$i++]] = unserialize($vars[$i]);
}
return $result;
}
function encode_session($tableauSession)
{
$chaineSession = '';
foreach ($tableauSession as $k => $v)
{
$chaineSession .= $k . '|' . serialize($v);
}
return $chaineSession;
}
print_r(array('nom' => 'katagoto', 'id' => 30, 'tab' => array('truc' => 'much', 'num' => 26, 5, 'katagoto', 'tab' => array('ripat', 'HyWaN', 40, 45))));
echo '<p> ------------</p><p>';
$chaine = 'nom|s:8:"katagoto";id|i:30;tab|a:5:{s:4:"truc";s:4:"much";s:3:"num";i:26;i:0;i:5;i:1;s:8:"katagoto";s:3:"tab";a:4:{i:0;s:5:"ripat";i:1;s:5:"HyWaN";i:2;i:40;i:3;i:45;}}';
//echo $chaine;
echo '</p><p> ------------</p><p>';
print_r(decode_session($chaine));
C'est louche
Mais si j'ai compris, on a :
Un preg_match_all ne serait-il pas plus adapté ?
Par avance merci de votre aide