我有两个mysql表trade
和current
。这两个表都有相同的产品,但它们的名称/属性不是相同的格式。
我正在尝试进行字符串匹配。例如;
交易表
$trade_name = "LIGUSTRUM JONANDRUM 3 Balls + 3 Stems";
$trade_attribute = "Total H. 140/ 160";
当前表
$our_name = "Ligustrum Jonandrum (3 Balls / Pom Poms)";
$our_attribute = "Height (cm): 140 - 160 (cm)";
我可以轻松地为此单独执行str_replace,但我有超过1000行,并且格式不一致。我需要一个函数来匹配商品名/属性与current
表中的对应物。我将提取交易价格并将其与current
表格中的价格相匹配。
我如何解决这个问题?
答案 0 :(得分:0)
字符串不一致是真理。所以相似性不明确。您只能生成统计算法,以便为相似性结果生成最大精度,并冒最大接受率的风险。那样的话:
<?php
function replace($string){
return strtolower(str_replace(str_split('\\/:*+/()-."<>|'),'',$string));
}
$trade_name = "LIGUSTRUM JONANDRUM 3 Balls + 3 Stems";
$trade_attribute = "Total H. 140/ 160";
$our_name = "Ligustrum Jonandrum (3 Balls / Pom Poms)";
$our_attribute = "Height (cm): 140 - 160 (cm)";
$trade_sum=replace($trade_name).replace($trade_attribute);
$our_name_sum=replace($our_name).replace($our_attribute);
$first_array = explode(' ', $trade_sum);
$second_array = explode(' ', $our_name_sum);
$array_differences= array_diff($first_array, $second_array);
$different_entries = count($array_differences);
$total_entries = count($first_array);
$similarity = 100-( $different_entries / $total_entries ) * 100;
echo $similarity.'%';
//in your case we get 80% similarity