2013-03-05 64 views
2

我試圖讓FormStack將POST數據發佈到我正在創建的腳本中,以便它可以插入到我自己的MySQL數據庫中。我能夠得到的數據和解析到一個數組,看起來是這樣的:FormStack,PHP:作爲嵌套數組的名稱和地址字段的POST信息

Array 
(
    [FormID] => 1111111 
    [UniqueID] => 222222 
    [name_field1] => first = FirstName last = LastName 
    [address_field1] => address = 123 Street Name address2 = Suite 1000 city = Exampleville state = WY zip = 12345 
    [random_field] => random text 
    [name_field2] => first = FirstName last = LastName 
    [address_field2] => address = 123 Street Name address2 = Suite 1000 city = Exampleville state = WY zip = 12345 
) 

的問題是name_fields和address_fields被格式化的方式。我已經制作了包含多維數組的POST數據的表單,但是其格式與此不同。我已經搜索並搜索了它,並且能夠將這些數據轉化爲它自己的數組,但它的方式比我想要的要多,我必須爲每個名稱字段和每個地址字段複製它。我覺得我必須錯過一個簡單的方法來解決名稱和地址字段中的各個部分。或者它看起來很乏味?

感謝

回答

0

這可能不是最完美的解決方案,但我很高興我能拿出任何解決方案。以下是我想出了:

foreach ($_POST as $key => $value) { 
    if (preg_match("/address2 = /", $value)) { 
     $search = array("address2 = ", "city = ", "state = ", "zip = "); 
     $addr_step1 = str_replace($search, "|", $value); 
     $addr_step2 = str_replace("address = ", "", $addr_step1); 
     $addr_step3 = explode("|", $addr_step2); 
     $addr_keys = array("Address", "Address2", "City", "State", "Zip"); 
     $value = array_combine($addr_keys, $addr_step3); 
    } elseif (preg_match("/address = /", $value)) { 
     $search = array("state = ", "zip = "); 
     $addr_step1 = str_replace($search, "|", $value); 
     $addr_step2 = str_replace("city = ", "| |", $addr_step1); 
     $addr_step3 = str_replace("address = ", "", $addr_step2); 
     $addr_step4 = explode("|", $addr_step3); 
     $addr_keys = array("Address", "Address2", "City", "State", "Zip"); 
     $value = array_combine($addr_keys, $addr_step4); 
    } elseif (preg_match("/first = /", $value)) { 
     $name_step1 = str_replace("last = ", "|", $value); 
     $name_step2 = str_replace("first = ", "", $name_step1); 
     $name_step3 = explode("|", $name_step2); 
     $name_keys = array("FirstName", "LastName"); 
     $value = array_combine($name_keys, $name_step3); 
    } 
    ${'f' . $key} = $value; 
} 

最後一點${'f'.$key} = $value;是給每個字段變量通過解決它(我有FormStack使用數字字段名,這就是爲什麼我追加「 f'到開頭)。因此,舉例來說,這樣的事情...

echo "$f12345678[City], $f12345678[State]"; 

會告訴我...

New York, NY