我正试图从字符串中提取一些度量大小,例如:
示例:
$s1=" foobar 10mm bar" // 10mm
$s2=" foobar 10-300ml barbr" // 10-300ml
$s3=" foobar 25 - 70 cm foo" // 25-70cmm
我该怎么做?
我已经试过了:
$sizes_volume_distance_markers = array('mm','ml','l','cm');
static $pattern_final_voldist;
if(!$pattern_final_voldist)
{
$pattern_final_voldist = implode("|",self::$sizes_volume_distance_markers);
}
if(preg_match_all("/(['d.-]{1,4}['s.-]{0,2}($pattern_final_voldist) {1,2})+/i",$str,$vvalues))
{
var_dump($vvalues);
}
应该可以,在最后一个括号中添加其他后缀:
/('d+'s+?'-'s+?)?('d+)'s+?(mm|ml|cm)/gi
用法:
$source=" foobar 10mm bar foobar 10-300ml barbr foobar 25 - 70 cm foo"
preg_match_all("/('d+'s+?'-'s+?)?('d+)'s+?(mm|ml|cm)/i",$source, $results);
如果你需要匹配浮动使用这个替代:
/('d+('.'d+)?'s+?'-'s+?)?('d+('.'d+)?)'s+?(mm|ml|cm)/gi