2016-08-30 3 views
0

Я использую php для захвата некоторой информации из текстового файла. Но я не могу получить свой массив, чтобы получить правильную информацию.Получить правильную информацию из txt-файла

это, по существу, содержимое текстового файла:

FIRSTNAME=firstname 
NAME=lastname 
STREET=street adress 
CITY=cityname 
ZIP=zipcode 
COUNTRY=country 
ISOCOUNTRY=US 
[email protected] 
MOBILENO=123456789 
USERNO=somenumber 



[PRODUCT] 
QTY=2 
ALPROJECTID=1123208 
PRICE=134,00 
DESCRIPTION=product1 
ARTNO=1 


[PRODUCT] 

QTY=1 
ALPROJECTID=1123208 
PRICE=134,00 
DESCRIPTION=product1 
ARTNO=1 

есть способ для вывода второй продукт в виде 2 продуктов?

это код, который я написал:

$articles = array(); 

//foreach($articles as $article){ 
$prodno = (int)$lines['ARTNO']; 
$prodno = $artkobling[$prodno]; 

$articles['theproduct'][$prodno][$projectid] = array(
'prodno' => $prodno, 
'quantity' => $lines['QTY'], 
'product' => $lines['TYPE'], 
'product' => $lines['TYPE'], 
'referenceid' => $lines['ORDERID'], 
'refid' => $lines['CUSTOMERID'], 
'unitprice' => (int)$lines['PRICE'] 
); 


$orderdata = array(
'userid' => $this->account, 
'fullname' => $lines['FIRSTNAME'] . " " . $lines['NAME'] , 
'address' => $lines['STREET'], 
'zipcode' => $lines['ZIP'], 
'city' => $lines['CITY'], 
'article' => $articles, 
'comment' => $lines['CUSTOMERID'] . " " . $lines['ORDERID'] , 
); 

Когда им отладки это работает, как ожидалось, и получает результат от одного продукта. Но как я могу получить результаты в виде 2 продуктов. Я не уверен, что я достаточно хорошо объяснил проблему. Было бы проще, если бы файл был JSON или XML, а не txt-форматом.

+0

Как вы заполняете массив '$ lines'? Я не вижу здесь код – BeetleJuice

+0

articles = array(); // foreach ($ articles as $ article) { $ prodno = (int) $ lines ['ARTNO']; $ prodno = $ artkobling [$ prodno]; – Slistryko

+0

im обрабатывает файл с ftp .opendir – Slistryko

ответ

1

Я бы использовал parse_ini_string для преобразования текстового файла в структуру данных.

//read the file contents 
$raw = file_get_contents('/path/to/textfile.txt'); 

//replace [PRODUCT] with [PRODUCT_0], [PRODUCT_1]...  
$raw = preg_replace_callback(
    '/\[PRODUCT\]/', 
    function() {static $i=0; return '[PRODUCT_'.$i++.']';} 
    ,$raw, -1, $count); 

//parse raw 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]; 

Это превратит ваш текстовый файл в $data массив, который имеет ключ для каждого свойства, и все продукты в их собственном массиве под ключ PRODUCTS.

Live demo

В качестве бонуса, $count это количество продукции. Оттуда вы можете делать то, что хотите, с данными.

+0

Это было здорово! возможно ли запустить скрипт, если у меня() внутри прудук? часто текстовый файл выглядит следующим образом: [ПРОДУКТ] (изготовленный на заказ) TYPE = newproduct4 PAPERTYPE = 1 QTY = 2 – Slistryko

Смежные вопросы