我需要从两个不同的字符串中提取数字和数字后面的单位。有些字符串在数字和单位之间有空格,就像这样
150 g
而其他则没有150g
$text = 'Rexona Ap Deo Aerosol 150ml Active CPD-05923';
$text = 'Cutex Nail Polish Remover Moisture 100ml ';
preg_match_all('!\d+!', $text, $matches);
if (sizeof($matches[0]) > 1) {
// how can I extract 'ml'
} else {
// how can I extract 150 ml ?
}
您可以使用:
preg_match_all('~\b(\d+(?:\.\d{1,2})?)\s*(ml|gm?|kg|cm)\b~i', $text, $matches);
并使用匹配的组#1和#2。
这应该适合你:
preg_match_all('!(\d+\s?\S+)!', $text, $matches);