PHP高级字符串分割


php advanced string splitting

我花了2天的大部分时间搜索PHP中拆分字符串的所有方法,但没有一种方法能帮到我。我需要能够将以下字符串格式拆分为数组,然后将每个数组拆分为子数组。

该数据是登记销售的日志。每笔交易都采用相同的格式,每笔交易字符串长度的唯一区别是购买的物品数量。这里有一个例子:(这个收据是一个十六进制流,所有的空格都是一个空格字符('x20)和所有的'。'是('x00)。同样,这些都是在一行中编辑的,只是为了更容易看)

    DATE           07/13/2014            MON...
         PLU#491320                          ..
          SPRITE T1                    $0.75...
          CUSTOMER DATE OF BIRTH  02/05/1978...
         PLU#820050                          ..
          SMIRNOFF VODKA LT T2        $13.99...
          TAX1 AMT                     $0.06...
          TAX2 AMT                     $1.42...
          .T.O.T.A.L              .$.16..2.2...
          .C.H.A.R.G.E            .$.16..2.2...
    NO.000002 REG01 EMPLOYEE 2    TIME 18:09..€

基本上我在找:

    Array {
           [0] = Date: 07/13/2014
           [1] = PLU#/Tax/Price: 491320 & T1 & 0.75, 820050 & T2 & 13.99 (no spaces)
           [2] = Tax: T1 & 0.06, T2 & 1.42 (no spaces)
           [3] = Transaction No.: 000001
           [4] = Register: 01
           [5] = Employee: Employee 2
           [6] = Time: 17:59
    }

我尝试了preg_replace, preg_split, substrstr_split,使用strpos并搜索每个部分的字符串位置。毫无效果。我可以清除空格,但是像Employee name这样的东西会搞砸,它可能有一个实际的空格。

除了我刚才列出的,还有其他分割字符串的方法吗?我尝试了几十个substr和妊娠函数,但没有一个对我有帮助。我已经花了足够的时间在谷歌搜索上试验和错误,我不妨问问是否有人知道一些我没有遇到过的东西。

你可以用"'n"分割得到行,然后修剪多余的空格,用regex得到左右部分。

编辑:我刚意识到你不需要左右列的命名数组。你只是想按行分割。

explode("'n", $input) //double quotes are necessary