我有一个mysql数据库,php在表上运行查询。我需要输出每个订单的测量值。
示例行为"this order contains 3x6lb of flour"
。我需要得到3x6lb
。但是,一些结果也是"this order contains 3 x 6lb of flour"
。可能的权重为lb
和oz
。
输出应如下所示:
$rownum | $measurement
1 | 3x6lb
2 | 5x10oz
答案 0 :(得分:1)
(\d+)\s*x\s*(\d+)\s*(lb|oz)
将捕获1位以上,然后是0+空白,然后是x
,接着是0+空白,捕获1位以上,然后是0+空白,最后捕获lb
或oz
单位(对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}中}}