muszę zrobić małe sprostowanie. Otóż gdy pisałem pierwszego posta byłem chyba bardzo śpiący bo podałem zły string. Prawidłowy string( czyli ten co zapisuje metoda write sesji) jest następujący:
Kod
userid|s:1:"0";login|s:9:"anonymous";roles|s:41:"useAuth;viewNews;viewComments;addComments";groupid|s:1:"2";groupName|s:10:"U?ytkownik";lang|s:2:"pl";
Ace zapodał mi takie wyrażenie regularne. Działa, jednakże rozwiązuje problem w sposób bardzo nieelegancki i raczej nie będę mógł go użyć w swojej aplikacji. Jeżeli ktos ma pomysł, jak ten string odczytać, proszę o rady

<?
$pattern = '/(.*?)|(.*?):(.*?):\"(.*?)\";/';
?>
Rezultat:
Kod
Array
(
[0] => Array
(
[0] => userid|s:1:"0";
[1] => login|s:9:"anonymous";
[2] => roles|s:41:"useAuth;viewNews;viewComments;addComments";
[3] => groupid|s:1:"2";
[4] => groupName|s:10:"U?ytkownik";
[5] => lang|s:2:"pl";
)
[1] => Array
(
[0] => userid
[1] => login
[2] => roles
[3] => groupid
[4] => groupName
[5] => lang
)
[2] => Array
(
[0] => s
[1] => s
[2] => s
[3] => s
[4] => s
[5] => s
)
[3] => Array
(
[0] => 1
[1] => 9
[2] => 41
[3] => 1
[4] => 10
[5] => 2
)
[4] => Array
(
[0] => 0
[1] => anonymous
[2] => useAuth;viewNews;viewComments;addComments
[3] => 2
[4] => U?ytkownik
[5] => pl
)
)
UPDATE: a więc problem rozwiązany:
<?php
$string = 'userid|s:1:\"0\";login|s:9:\"anonymous\";roles|s:41:\"useAuth;viewNews;viewComments;addComments\";groupid|s:1:\"2\";groupName|s:10:\"U?ytkownik\";lang|s:2:\"pl\";';
$pattern = '/(.*?)|(.*?\";)/';
$keys = &$match[1];
$vals = &$match[2];
foreach( $keys as $key => $val )
{
}
?>
Kod
Array
(
[userid] => 0
[login] => anonymous
[roles] => useAuth;viewNews;viewComments;addComments
[groupid] => 2
[groupName] => U?ytkownik
[lang] => pl
)
Gratulacje przyjmuję od poniedziałku do piątku w godzinach od 18:00 do 22:00