2016-08-30 21 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として$ articles){ $ 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]; 

これは、キーPRODUCTSの下に、独自の配列内の各プロパティのキー、およびすべての製品を提供してい$data配列にテキストファイルを変換します。ボーナスとして

Live demo

$countは、製品の数です。そこから、データで必要なことをすることができます。

+0

でファイルを処理していました。これは素晴らしかったです! pruductの中にスクリプトを実行することは可能ですか?多くの場合、テキストファイルは次のようになります。[PRODUCT] (カスタム) TYPE = newproduct4 PAPERTYPE = 1 QTY = 2 – Slistryko

関連する問題