字符串匹配不同格式的相同文本

时间:2015-05-10 15:49:02

标签: php

我有两个mysql表tradecurrent。这两个表都有相同的产品,但它们的名称/属性不是相同的格式。

我正在尝试进行字符串匹配。例如;

交易表

 $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表格中的价格相匹配。

我如何解决这个问题?

1 个答案:

答案 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