我正在使用一个模块在我的网站上创建预订单。
他们有一个钩子,我可以使用它创建新的预订后触发。
我得到的变量是booking_form: 在此变量内的内容如下:
text^name1^PETER~text^secondname1^SMITH~text^phone1^023482348~text^adres1^STREETAVENUE 1B~text^postcode1^91201CA~text^woonplaats1^LIVINGPLACE~email^email1^peter@example.com
PHP是否有某种方式可以获取数组中所有字段的所有值或其他内容?像这样吗?
array(
name or name1? => PETER,
secondname => SMITH,
etc... => etc...
)
因此该函数必须根据^和〜字符分割字符串。
答案 0 :(得分:0)
尝试一下:
$result = array();
$data = explode ( "~", $yourString )
foreach ( $data as $element)
{
$elt = explode ( "^", $element ) ;
$result[$elt[1]] = $elt[2];
}
答案 1 :(得分:0)
另一种方法...
$input = 'text^name1^PETER~text^secondname1^SMITH~text^phone1^023482348~text^adres1^STREETAVENUE 1B~text^postcode1^91201CA~text^woonplaats1^LIVINGPLACE~email^email1^peter@example.com';
$split = explode('~', $input);
$finalArray = [];
foreach($split as $thing) {
list ($type, $key, $value) = explode('^', $thing);
$finalArray[$key] = $value;
}
print_r($finalArray);
答案 2 :(得分:0)
您的格式化字符串的格式似乎不一致,我不明白 text
和 email
标记的相关性。
此外,我们不知道您的输入数据可能会有所不同,因为您只给了我们一个和字符串,而且我们不知道您确切想要的输出,因为您“yatta-yatta”符合您的期望。
也就是说,可以使用正则表达式来解析字符串。
代码:(Demo)
$string = 'text^name1^PETER~text^secondname1^SMITH~text^phone1^023482348~text^adres1^STREETAVENUE 1B~text^postcode1^91201CA~text^woonplaats1^LIVINGPLACE~email^email1^peter@example.com';
preg_match_all('/(?:text|email)\^([^^]+)\^([^^~]*)/', $string, $matches, PREG_SET_ORDER);
var_export(
array_column($matches, 2, 1)
);
输出:
array (
'name1' => 'PETER',
'secondname1' => 'SMITH',
'phone1' => '023482348',
'adres1' => 'STREETAVENUE 1B',
'postcode1' => '91201CA',
'woonplaats1' => 'LIVINGPLACE',
'email1' => 'peter@example.com',
)