0

この形式のFacebookURLを指定します。

....&app_data=eid~423423|pid~23982938|admin~1

配列が欲しい:

[ 'eid' => '423423', 'pid => '23982938', 'admin' => '1' ];

これが私がやっている方法です:

$app_data = $signed_request['app_data']; parse_str(str_replace('~','=',str_replace('|','&',$app_data)), $app_data_params);

これを達成するためのより良い方法はありますか?

4

4 に答える 4

0
$_GET['app_data']= "eid~423423|pid~23982938|admin~1";

$a = str_replace('~','=', $_GET['app_data']);
$b = str_replace("|","&", $a);
parse_str($b);

echo $eid;
echo $pid;
echo $admin;

別の方法があります。Gaaah、@Chrisは私を打ち負かしました!

于 2012-07-27T15:12:38.810 に答える
0

を使用preg_replaceして への 2 つの呼び出しをなくすことができますstr_replaceが、そうすることでパフォーマンス上の利点が得られるとは思えません。今までのやり方で問題ありません。

$str = 'eid~423423|pid~23982938|admin~1';
parse_str(
    preg_replace(
        array('/\~/','/\|/'), 
        array('=','&'), 
        $str
    ), 
    $app_data_params
);
print_r($app_data_params);
// Array ( [eid] => 423423 [pid] => 23982938 [admin] => 1 ) 

ドキュメンテーション

于 2012-07-27T15:21:35.113 に答える
0

爆発()してみてください

$appData = explode("|", $signed_request['app_data']);

それは少なくともあなたに与えるでしょう

array(3) {
    [0] => "eid~4234234",
    [1] => "pid~23982398",
    [2] => "admin~1"
}
于 2012-07-27T14:52:00.613 に答える
-1
//  incoming GET string
$_GET['app_data']= "eid~423423|pid~23982938|admin~1";

$bits = explode("|", $_GET['app_data']);

foreach( $bits as $bit ){
$res = explode('~', $bit);
$result[$res[0]] = $res[1];
}

var_dump($result);
array
'eid' => string '423423' (length=6)
'pid' => string '23982938' (length=8)
'admin' => string '1' (length=1)

しかし、それがもっと速いかどうかはわかりません。

于 2012-07-27T15:03:40.120 に答える