我需要一些建议...
在我的Magento商店下订单后,我有一个观察者查看该事件并触发使用订单信息生成的txt文件。
然后,GPRS打印机每50秒查看一次这个txt文件并打印订单。
这是txt文件中一个订单的格式:
# 10 *1*100000190*1;Ice Cream; 15; 1;Coke; 8; 1;Chicken Burger; 33; *15*n/a;71; 4;John Doe;1 test street, City;08:01 13-12-2013; 184;7; n/a;011123123;*#
(注意“100000190”是唯一的订单号)
订单一旦打印,即可由运营商接受/拒绝。然后,接受/拒绝确认将从打印机发送反馈到服务器上的其他php文件。 (此确认将再次包含唯一的订单号)
收到接受/拒绝确认后,应从原始txt文件中删除该订单,以便不再读取和处理/打印。
因此会有多个订单进入txt文件,因此当我收到一个订单的确认时我不能简单地清除内容,因为其他订单将丢失。
我将如何仅删除从txt文件中确认的订单并将其余部分删除?
以下是包含3个订单的txt文件示例:
#10 * 1 * 100000190 * 1;冰淇淋; 15; 1;焦炭; 8; 1;鸡肉汉堡; 33; * 15 * N / A; 71; 4; John Doe; 1个测试街,City;插入时间属性; 184; 7; n / a; 011123123; * ## 10 * 1 * 100000191 * 1;冰淇淋; 15; 1;鸡肉裹敷; 33; * 15 * N / A; 63; 4; John Doe; 1个测试街,City;插入时间属性; 185; 7; n / a; 011123123; * ## 10 * 2 * 100000192 * 1;鸡肉裹敷; 33; * 0 * N / A; 33; 4; John Doe; 1个测试街,City;插入时间属性; 186; 7; N / A; 011123123; *#
欣赏协助。
答案 0 :(得分:0)
<?php
// open your file and save to $txt
//$txt = "# 10 *1*100000190*1;Ice Cream; 15; 1;Coke; 8; 1;Chicken Burger; 33; *15*n/a;71; 4;John Doe;1 test street, City;insert time attribute; 184;7; n/a;011123123;*## 10 *1*100000191*1;Ice Cream; 15; 1;Chicken Wrap; 33; *15*n/a;63; 4;John Doe;1 test street, City;insert time attribute; 185;7; n/a;011123123;*## 10 *2*100000192*1;Chicken Wrap; 33; *0*n/a;33; 4;John Doe;1 test street, City;insert time attribute; 186;7; n/a;011123123;*#";
$txt = file_get_contents("yourfile");
$arr = preg_split("/#/", $txt);
$result = "";
foreach($arr as $line) {
if(!empty($line)) {
$components = preg_split("/\*/", $line);
$orderNo = $components[2];
if(checkIfWantToPrint($orderNo)) {
// print and other operations
} else {
// add line
$result .= "#".$line."#";
}
}
}
// save your file with $result value
file_put_contents("yourfile", $result);
?>