我正在尝试让FormStack将数据发送到我正在编写的脚本中,以便可以将其插入到我自己的MySQL数据库中。我能够获得数据并解析成如下所示的数组:
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的格式化方式。我对它进行了搜索和处理,我能够将数据放入它自己的数组中,但它的代码比我想要的要多得多,我必须为每个名称字段和每个地址字段复制它。还是像看起来那么单调乏味?
谢谢
发布于 2013-03-07 02:05:02
这可能不是最优雅的解决方案,但我很高兴我能够想出任何解决方案。这是我想出来的:
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, NYhttps://stackoverflow.com/questions/15227298
复制相似问题