PHP从字符串中获取整数



我有一个存储客户订单的庞大数据库。我必须创建一个报告(每月和每年)的总产品销售和产品品牌销售。

主要问题是,在每个订单条目中,我都有一个名为items的列,其中存储了订购的产品信息,如:

[32] (1 × 22 EUR)产品名称wxy
代码:XY
颜色:LRC红樱桃[42] (1 × 33欧元)产品名称fgh
代码:XY
颜色:粉色[66](1 × 33欧元44欧元)产品名称abc
代码:YU
颜色:LPK Pink [60] (6 × 45欧元)
代码:XY [1965] (1 x 32 EUR)产品名称xyz
代码:XY
颜色:Yellow [3413] (1 x 74 EUR)产品名称xyz
代码:XZ [22] (2 × 85 EUR)产品名称zzz
代码:XY
颜色:黑色

主要优点是每行用n分隔,产品id在方括号中。

知道我已经选择了while循环中所有的MySQL条目,我怎么能得到所有的产品代码(在这个例子中:32,42,66,…)对于每个订单条目(优先在数组中)?

更确切地说,如何从这个字符串中只获得值32:

[32] (1 × 22 EUR)产品名称wxy
代码:XY
颜色:LRC红樱桃

注意:看前两行, 之间有一个<br/>标签

wxy

代码

,但是每个[id]前总是有一个n

您应该重新构造您的数据,这将是将来处理的一个痛苦。对于当前的问题,您可以使用preg_match_all的正则表达式。

<?php
$string = '[32] (1 x 22 LEI) prod name wxy
Code:XY
Color:LRC Red Cherry [42] (1 x 33 LEI) prod name fgh
Code:XY
Color:pink [66] (1 x 44 LEI) prod name abc
Code:YU
Color:LPK Pink [60] (6 x 45 LEI) prd name xyz
Code:XY [1965] (1 x 32 LEI) prod name xyz
Code:XY
Color:Yellow [3413] (1 x 74 LEI) product name xyz
Code:XZ [22] (2 x 85 LEI) prod name zzz
Code:XY
Color: Black';
preg_match_all('~[(d+)]~', $string, $ids);
print_r($ids[1]);
输出:

Array
(
    [0] => 32
    [1] => 42
    [2] => 66
    [3] => 60
    [4] => 1965
    [5] => 3413
    [6] => 22
)

这个正则表达式拉出[]中的所有数字(d+)。波浪线只是分隔符,表示正则表达式的开始和结束位置。分隔符可以是任何东西,但如果在正则表达式中使用,则需要进行转义。

要得到32,您可以使用正则表达式与匹配组

<?php
Preg_match_all('#([?<productId>[0-9]{1,}])#', $string, $matches). 

这也应该适用于产品列表

相关内容

  • 没有找到相关文章

最新更新