2012-03-06 21 views
0

サービスから次の出力を取得しました。文字列から配列を作成する

出力:

OK:設定したユーザー名のOK:設定したパスワードOK:設定し、サーバ状態取得・ネットワークOK:サインインOKます。get-グループメンバーグループの連絡先リストの連絡先5551000008539名「ドライバー2 "オフライングループの連絡先リストの連絡先5551000008540名前"ドライバ3 "の状態オフライングループの連絡先リストの連絡先5551000008541名前"ドライバ4 "状態オフライン状態のクライアント所有ID 5551000008535クライアント所有ID 0クライアント固有ID 5551000008535状態ログインを拒否する認証エラーがクライアントの自己ID 0状態を拒否しました

前と同じようにユーザ配列に入れますか?

私はどのようにして爆発/爆縮/プレグマッチなどをユーザーの配列にすることができますか?以下のような:$試合からデータをサルベージ

$users - Driver 2 => 5551000008539 
     Driver 3 => 5551000008540 
     Driver 4 => 5551000008541 
+0

何の改行を「OK? –

+1

有効な答えを得るには、入力文字列(改行を含む)の正確な書式を投稿する必要があるでしょう。 – rdlowrey

+0

おそらく ":"は区切り記号です。しかし、私はこれに答えようとする前に明確化が必要です。 – Graham

答えて

0

これは($sを仮定することは、当社のサービスからの出力が含まれている)してみません後

$result = array_combine($out[2], $out[1]); 
+0

警告:array_combine()[function.array-combine]:両方のパラメータは少なくとも1つの要素を持ちます –

+0

'$ s = 'を割り当てます。パスワードOK:サーバ状態取得ネットワーク設定OK:サインインOK:get-group-membersグループ連絡先リスト5551000008539名前「ドライバ2」状態オフライングループ連絡先リスト5551000008540名前「ドライバ3」状態offlineグループcontact- list contact 5551000008541 name "ドライバ4"状態オフライン状態クライアント接続ID 5551000008535 client-own-id 0 client-own-id 5551000008535サインインの切断状態の認証が拒否されましたauth-error client-own-id 0 state offline ';' –

1
<?php 
$str = 'OK: set username OK: set password OK: set server state acquiring-network OK: sign-in OK: get-group-members group contact-list contact 5551000008539 name "Driver 2" state offline group contact-list contact 5551000008540 name "Driver 3" state offline group contact-list contact 5551000008541 name "Driver 4" state offline state connecting client-own-id 5551000008535 client-own-id 0 client-own-id 5551000008535 state disconnecting sign-in denied auth-error client-own-id 0 state offline'; 
preg_match_all('@contact (\d+) name "(.+?)"@', $str, $matches, PREG_SET_ORDER); 
print_r($matches); 
$array = array(); 
foreach($matches as $match) { 
    $array[$match[2]] = $match[1]; 
} 
print_r($array); 

は運動として残っています。

preg_match_all("/contact-list contact (\\d+) name \"(.*?)\"/", $s, $out, PREG_PATTERN_ORDER); 

、値などをキーとして名前と番号を持つ配列を作成するには:

+0

は空の配列を2つだけ持っています。Array()Array() –