我在项目中遇到了一个问题。我有一个产品名称列表,如
'Optimum Nutrition 100乳清蛋白 - 黄金标准巧克力薄荷2.07磅'
'Optimum Nutrition 100乳清蛋白 - 黄金标准(自然)香草1.9磅'
'Optimum Nutrition 100乳清蛋白 - 黄金标准巧克力薄荷2.07磅'
'Optimum Nutrition 100乳清蛋白 - 黄金标准巧克力花生酱3.31磅'
'Optimum Nutrition 100乳清蛋白 - 金标准关键酸橙馅饼1.81磅'
'Optimum Nutrition 100乳清蛋白 - 黄金标准盐味焦糖1.81磅'
'Optimum Nutrition 100乳清蛋白 - 黄金标准香草冰淇淋2.07磅'
所有这些产品保存在产品表中
然后我有另一个存储大小类别的表。
“1磅,3.3磅,8磅,1.8磅,3磅,10磅,5磅,2磅,2.91磅,2.47磅,2.5磅”。
我正在对产品进行分类,以便如果在产品名称中找到尺寸,那么该产品将被分配到该尺寸类别。
例如
“Optimum Nutrition 100乳清蛋白 - 黄金标准双重巧克力1磅”
在本产品中,我们的尺寸类别表中也有1磅和1磅,然后产品将分配到1磅类别。
我正在使用以下正则表达式:
preg_match("/[\s]+\b$size\b/", $product_name) OR
preg_match("/[\-]+\b$size\b/", $product_name) OR
preg_match("/\b$size\b/", $product_name)
$size
是我从尺寸类别表中获得的尺寸,而$product_name
是产品的名称,目前正在为我工作。
现在我想要的是,如果产品中有特定尺寸,但尺寸类别表中不存在,那么该产品应该分配到最接近的尺寸类别。
例如
Optimum Nutrition 100乳清蛋白 - 金标准巧克力薄菏2.07磅'
我的尺寸类别表中不存在2.07磅,那么此产品应分配为2磅或2.47磅类别。
答案 0 :(得分:0)
如果您的数据库包含2.00和2.10,那么对于
Optimum Nutrition 100乳清蛋白 - 金标准巧克力薄菏2.07磅
您需要一个与{
"key": [
"2035864"
],
"value": {
"revenue": 302805.35
}
}
匹配的正则表达式
2.07 lbs
我让你以通用而强大的方式匹配2.07。您可以在http://regex101.com或http://www.phpliveregex.com/
测试正则表达式E.g。 2.10
答案 1 :(得分:-1)
$search_product='2.07 Lbs';
$available_products=array('2 Lbs','2.91 Lbs','2.47 Lbs','2.5 Lbs');
for($i=0;$i<count($available_products);$i++){
if(!isset($closet_value)){
$closet_diff=abs($search_product-$available_products[$i]);
$closet_value=$available_products[$i];
}else if($closet_diff>abs($search_product-$available_products[$i])){
$closet_diff=abs($search_product-$available_products[$i]);
$closet_value=$available_products[$i];
}
}
echo $closet_value;
2磅