preg_match - 查找数据

时间:2014-05-20 15:58:56

标签: php mysql preg-match

我有一个mysql数据库,php在表上运行查询。我需要输出每个订单的测量值。

示例行为"this order contains 3x6lb of flour"。我需要得到3x6lb。但是,一些结果也是"this order contains 3 x 6lb of flour"。可能的权重为lboz

输出应如下所示:

$rownum | $measurement
1 | 3x6lb
2 | 5x10oz

1 个答案:

答案 0 :(得分:1)

This expression

(\d+)\s*x\s*(\d+)\s*(lb|oz)

将捕获1位以上,然后是0+空白,然后是x,接着是0+空白,捕获1位以上,然后是0+空白,最后捕获lboz单位(对i修饰符不区分大小写)。


<强> PHP:

$data = array(
    array(
        'rownum' => 1,
        'measurement' => '3x6lb',
    ),
    array(
        'rownum' => 2,
        'measurement' => '5 x 10 oz',
    ),
);

foreach($data as $row) {
    if(preg_match('/(\d+)\s*x\s*(\d+)\s*(lb|oz)/i', $row['measurement'], $matches)) {
        echo $row['rownum'] . ': ' . $matches[0];

        $matches[1]; // 3
        $matches[2]; // 6
        $matches[3]; // lb
    }
}
如果找到匹配项,

preg_match()将返回true / false。然后整个匹配将位于$matches[0]中,每个部分都在密钥{{1}中}}