【问题标题】:How to get JSON Strings Difference Percentage如何获取 JSON 字符串差异百分比
【发布时间】:2015-02-26 22:06:43
【问题描述】:

是否有任何逻辑/算法来比较两个 JSON 字符串的差异百分比。我正在尝试使用它来验证我存储为 JSON 字符串的签名。

字符串 1:

[
  {"lx":5,"ly":34,"mx":5,"my":33},
  {"lx":5,"ly":34,"mx":5,"my":34},
  {"lx":6,"ly":32,"mx":5,"my":34},
  {"lx":7,"ly":31,"mx":6,"my":32},
  {"lx":8,"ly":31,"mx":7,"my":31},
  {"lx":9,"ly":30,"mx":8,"my":31},
  {"lx":10,"ly":29,"mx":9,"my":30},
  {"lx":11,"ly":29,"mx":10,"my":29},
  {"lx":11,"ly":28,"mx":11,"my":29}
]

字符串 2:

[
  {"lx":5,"ly":33,"mx":5,"my":32},
  {"lx":5,"ly":33,"mx":5,"my":33},
  {"lx":6,"ly":32,"mx":5,"my":33},
  {"lx":7,"ly":32,"mx":6,"my":32},
  {"lx":8,"ly":32,"mx":7,"my":32},
  {"lx":9,"ly":32,"mx":8,"my":32},
  {"lx":10,"ly":31,"mx":9,"my":32},
  {"lx":11,"ly":30,"mx":10,"my":31},
  {"lx":12,"ly":30,"mx":11,"my":30},
  {"lx":13,"ly":29,"mx":12,"my":30}
]

任何建议将不胜感激。

【问题讨论】:

  • 你能澄清你的问题吗?您的示例的预期结果是什么?
  • 实际上 String 1 是一些行(表示签名)的 json 表示,我已将其保存在数据库中。现在字符串 2 再次是相似的签名,可能会有细微的变化,所以我只想比较字符串,以便系统可以判断它是匹配的签名。

标签: php json compare


【解决方案1】:

我没有得到你想要做什么,但如果你只是想检查字符串相似度,你可以使用similar_text php 命令

示例:

$str1 = '{"lx":5,"ly":34,"mx":5,"my":33},
  {"lx":5,"ly":34,"mx":5,"my":34},
  {"lx":6,"ly":32,"mx":5,"my":34},
  {"lx":7,"ly":31,"mx":6,"my":32},
  {"lx":8,"ly":31,"mx":7,"my":31},
  {"lx":9,"ly":30,"mx":8,"my":31},
  {"lx":10,"ly":29,"mx":9,"my":30},
  {"lx":11,"ly":29,"mx":10,"my":29},
  {"lx":11,"ly":28,"mx":11,"my":29}';

  $str2 = '{"lx":5,"ly":33,"mx":5,"my":32},
  {"lx":5,"ly":33,"mx":5,"my":33},
  {"lx":6,"ly":32,"mx":5,"my":33},
  {"lx":7,"ly":32,"mx":6,"my":32},
  {"lx":8,"ly":32,"mx":7,"my":32},
  {"lx":9,"ly":32,"mx":8,"my":32},
  {"lx":10,"ly":31,"mx":9,"my":32},
  {"lx":11,"ly":30,"mx":10,"my":31},
  {"lx":12,"ly":30,"mx":11,"my":30},
  {"lx":13,"ly":29,"mx":12,"my":30}';

  $percent = 0;

  echo similar_text($str1,$str2,$percent).' equal chars'.PHP_EOL;
  echo $percent.'% similarity';

给你:

269 equal chars
78.425655976676% similarity

【讨论】:

  • 这与我正在寻找的非常接近。谢谢你的建议。
【解决方案2】:

可以使用levenshtein函数计算字符串距离

太糟糕了,它仅限于不超过 255 个字符的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-11-27
    相关资源
    最近更新 更多