php正则表达式拆分发票行项目描述

时间:2012-11-30 20:32:01

标签: php regex preg-match

我正在尝试拆分字符串,如下所示:

一个项目(Item A),可能包含89798个数字和字母@ $ 550.00

<{> 1} Item B @ $ 420.00

476584 Item C,数量更多,货币符号不同@£420.00

成:

array(

    0 => 1

    1 => "some item which may contain 89798 numbers and letters"

    2 => $550.00

);

这有意义吗?

我正在寻找一个正则表达式模式,它将分割数量,描述和价格(包括符号)。

字符串将始终为:

qty x description @ price+symbol

所以我认为正则表达式会是这样的:

`(match a number and only a number) x (get description letters and numbers before the @ symbol) @ (match the currency symbol and price)`

我该如何处理?

2 个答案:

答案 0 :(得分:1)

preg_match('/^(\d+)\s*x\s(.+)\s@\s*([^@]+)$/', $string, $match);
unset($match[0]);
print_r($match);

答案 1 :(得分:0)

如果x@两侧始终有空格,您可以试试这个:

$pattern = '/\s*(x|@)\s*/';
$array = preg_split($pattern, $input_string);