使用php从txt文件中删除一组特定内容

时间:2013-12-13 08:43:11

标签: php file magento

我需要一些建议...

在我的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; *#


欣赏协助。

1 个答案:

答案 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);
?>