PHP 从字符串中获取整数

标签 php mysql arrays string integer

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

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

[32] (1 x 22 EUR) prod name wxy
Code:XY
Color:LRC Red Cherry [42] (1 x 33 EUR) prod name fgh
Code:XY
Color:pink [66] (1 x 44 EUR) prod name abc
Code:YU
Color:LPK Pink [60] (6 x 45 EUR) prd name xyz
Code:XY [1965] (1 x 32 EUR) prod name xyz
Code:XY
Color:Yellow [3413] (1 x 74 EUR) product name xyz
Code:XZ [22] (2 x 85 EUR) prod name zzz
Code:XY
Color: Black

主要优点是每行都用 \n 分隔。产品 ID 位于方括号中。

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

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

[32] (1 x 22 EUR) prod name wxy
Code:XY
Color:LRC Red Cherry

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

wxy

Code

,但每个 [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+) 拉入 [] 内。波浪号只是分隔符,表示正则表达式的开始和结束位置。分隔符可以是任何内容,但如果在正则表达式中使用,则需要转义所使用的任何内容。

关于PHP 从字符串中获取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675665/

相关文章:

php - 如何使用filter_input/filter_var中的选项数组

php - 按数据库中的评级排序 - 将此 SQL 放在哪里? (PHP/MySQL)

c - If 语句不适用于 C 中的 char 数组元素

c++ - 使用*指针数组 C++ 设置构造函数和析构函数

Javascript for 循环不循环遍历数组

php - header() 不会自动重定向到另一个索引页

javascript - 在 html 文档中调用 PHP 函数 nl2br

php - 我需要帮助使用 PHP 从 MySQL 数据库生成分组和表格报告吗?

php页面无法加载MySQL的数据库

php - PHP 和 mysql 中的日期比较