0

セッションから取得したデータがあり、正規表現に基づいて解析したいと考えています。以下は、ログイン、firstName、lastName を取得する 3 つのデータです。

login = James 
firstName = James.S 
lastName = Steal


Array (
[user] => __PHP_Incomplete_Class Object (
    [__PHP_Incomplete_Class_Name] => DEX_User
    [permissionID:DE_User:private] => 9
    [login:DE_User:private] => James.S
    [email:DE_User:private] => james.s@domain.com
    [firstName:DE_User:private] => James
    [lastName:DE_User:private] => Steal
    [title:DE_User:private] => Warehouse Man
    [manager:DE_User:private] => Manager's Name
    [workPhone:DE_User:private] => +1 (111) 111-1111
    [mobilePhone:DE_User:private] => +1 (222) 222-2222
    [homePhone:DE_User:private] => +1 (333) 333-3333
    [im:DE_User:private] =>
    [timeDelta:DE_User:private] => Asia/Hongkong
    [lastLogin:DE_User:private] => __PHP_Incomplete_Class Object ( 
        [__PHP_Incomplete_Class_Name] => GB_Date
        [valueStored:protected] => 13545544126666309821
        [mode:protected] => BASE
        [master:protected] =>
    )
    [description:DE_User:private] => Warehouse Engineer
    [isActive:DE_User:private] => __PHP_Incomplete_Class Object (
        [__PHP_Incomplete_Class_Name] => GB_Boolean
        [valueStored:protected] => 1
        [mode:protected] => BASE
        [master:protected] =>
    )
    [isTerminate:DE_User:private] => __PHP_Incomplete_Class Object (
        [__PHP_Incomplete_Class_Name] => GB_Boolean
        [valueStored:protected] =>
        [mode:protected] => BASE
        [master:protected] =>
    )
    [id:protected] => 231968
    [isModifyed:protected] => 
    [needInsert:protected] => 
    [isDeleted] => 
    [isRemoved] => 
)
[enter_password] => 2asas(qwqw)

正規表現を実行しようとしました'/\[[\/]?[A-Za-z0-9]+\]/';が、ブラケット内でしか取得できません。

ありがとうございました。

4

1 に答える 1

4

RegExp を使用して解析する代わりに、評価することができます。

をご覧くださいvar_export($_SESSION['user']);。これは解析可能な文字列を返します。唯一の問題は次のとおりです。

__PHP_Incomplete_Class::__set_state

「__PHP_Incomplete_Class」は、セッションが開始されたときにクラスが不明であり、文字列をまだ解析できないことを意味します。

しかし、 によって返された文字列を取得して、 の出現箇所をでvar_export($_SESSION['user'],true)置き換えると、文字列を評価できます。__PHP_Incomplete_Class::__set_statearray

eval('$user='.str_replace('__PHP_Incomplete_Class::__set_state',
                          'array',
                          var_export($_SESSION['user'],true)).';');

echo $user[0]['login'].',<br/>'.
     $user[0]['firstName'].',<br/>'.
     $user[0]['lastName'];
于 2012-10-29T05:12:58.173 に答える