字符串是: Byredo Perfume Oil Roll-On Blanche 7.5ML 我想从字符串中获取 7.5 。
$productinfo['title'] = 'Estee Lauder Sensuous Noir EDP 50ML';
if (preg_match('/.*\s(\d+)\s?ml/', strtolower($productinfo['title'])))
{
preg_match('/.*\s(\d+)\s?ml/', strtolower($productinfo['title']), $C);
$mlsize = $C[1];
echo $mlsize;
}
此代码效果很好。我从这段代码中得到 50 。但是当 $ productinfo ['title'] 等于此时: Byredo Perfume Oil Roll-On Blanche 7.5ML 代码无效。我想从字符串
中获取 7.5答案 0 :(得分:0)
.*\s(\d*(?:\.\d+)?)\s?ml
试试这个。看看demo。你的正则表达式不工作的原因是你捕获整数但是有.
,即它是一个浮点数。要捕获浮点数,请使用这个正则表达式。
http://regex101.com/r/tF5fT5/45
$re = "".*\\s(\\d*(?:\\.\\d+)?)\\s?ml"i";
$str = "Byredo Perfume Oil Roll-On Blanche 7.5ML ";
preg_match_all($re, $str, $matches);