【问题标题】:PHP get integer from string [closed]PHP从字符串中获取整数[关闭]
【发布时间】:2015-06-05 20:56:02
【问题描述】:

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

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

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

主要优点是每一行都由\n分隔,产品ID在方括号中。

知道我已经在 while 循环中选择了所有 MySQL 条目,我如何获取每个订单条目的所有产品代码(在本例中:32、42、66、...)(最好在数组中)?

相反,如何从该字符串中仅获取值 32:

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

注意:看前两行,在

之间有一个<br/>标签

wxy

代码

,但每个 [id] 总是有一个 \n“之前”。

【问题讨论】:

  • 您的数据库需要认真努力进行规范化...这看起来更像是一张手工制作的账单,而不是通过软件完成的。
  • 我同意你的建议,但首先我必须更新数据库(目前,它像我解释的那样存储)。它包含数千个条目...

标签: php mysql arrays string integer


【解决方案1】:

您应该重组您的数据,这在未来将是一件很痛苦的事情。您可以使用带有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+) 提取到 [] 中。波浪号只是表示正则表达式开始和结束的分隔符。分隔符可以是任何东西,但如果在正则表达式中使用,则需要对所使用的任何内容进行转义。

【讨论】:

  • 谢谢,这是我期待的答案。我不太了解 preg_match 语法,即使我已经看过更多次了。现在我必须规范化数据库并在每次下订单时插入详细信息。
  • 没问题。另请注意,对于这个答案,我们没有使用0 索引,我们使用的是1。零索引是找到的所有内容。其余的键是每个捕获的组。由于我们只捕获一个值,我们在这里使用1
【解决方案2】:

要获得 32,您可以将正则表达式与匹配组一起使用

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

这也应该适用于产品列表。

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2015-02-17
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多