<?php
$raw = <<< 'TEXT'
FIRSTNAME=firstname
NAME=lastname
STREET=street adress
CITY=cityname
ZIP=zipcode
COUNTRY=country
ISOCOUNTRY=US
EMAIL=email@domene.com
MOBILENO=123456789
USERNO=somenumber
[PRODUCT]
QTY=2
ALPROJECTID=1123208
PRICE=134,00
DESCRIPTION=product1
ARTNO=1
[PRODUCT]
QTY=1
ALPROJECTID=9563214
PRICE=64,00
DESCRIPTION=product2
ARTNO=2
TEXT;
//replace [PRODUCT] with [PRODUCT_1], [PRODUCT_2]...
$raw = preg_replace_callback(
'/\[PRODUCT\]/',
function() {static $i=0; return '[PRODUCT_'.$i++.']';}
,$raw, -1, $count);
//parse string into an array
$data = parse_ini_string($raw,true);
//extract the products into their own array. This assumes that
//[PRODUCT] sections are always at the end of the file
$products = array_values(array_splice($data,$count*-1));
//Build the final array
$data = $data + ['PRODUCTS'=>$products];
echo "There are $count products \n\n";
print_r($data);
- Output for 5.6.0 - 5.6.25, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.7
- There are 2 products
Array
(
[FIRSTNAME] => firstname
[NAME] => lastname
[STREET] => street adress
[CITY] => cityname
[ZIP] => zipcode
[COUNTRY] => country
[ISOCOUNTRY] => US
[EMAIL] => email@domene.com
[MOBILENO] => 123456789
[USERNO] => somenumber
[PRODUCTS] => Array
(
[0] => Array
(
[QTY] => 2
[ALPROJECTID] => 1123208
[PRICE] => 134,00
[DESCRIPTION] => product1
[ARTNO] => 1
)
[1] => Array
(
[QTY] => 1
[ALPROJECTID] => 9563214
[PRICE] => 64,00
[DESCRIPTION] => product2
[ARTNO] => 2
)
)
)
preferences:
151.32 ms | 405 KiB | 230 Q