【发布时间】:2021-10-12 18:35:54
【问题描述】:
为此,我自己一直在尝试并尝试在网上寻找答案一段时间。我想要实现的是比较两个字符串并将字符差异显示为整数,同时保留字符位置。基本上,我有一个问答应用程序,我需要将正确答案与给定答案进行比较。所以,例如:
$correct = 'Monday';
$answer = 'Manday';
在上面的例子中只有一个错误,所以在比较$correct和$answer字符串时,我需要显示“1”。
我尝试使用strcmp,但这并没有给我正确的结果。对于上面的示例,执行strcmp($original, $answer) 会得到这个结果:3584。
另外,当使用similar_text 时,我没有得到我需要的结果。示例,当使用similar_text($original,$answer) 时,在使用上面的Monday 和Manday 示例时,它给出了 5 个相似字符的预期结果,共 6 个。但是当我执行以下操作时,它仍然给我 1 作为结果,虽然它应该是 0(就我而言):
similar_text("Hello", "World") // The "o" is matched, but it is in the wrong position
所以,简而言之,我需要实现的就是这个。我有一个正确的答案,并且用户输入给出了答案。我想将用户给出的答案与原始正确答案进行比较。我想如何比较它们?我想比较两个字符串中每个字符的位置,对于所有不正确的字符,我想将错误字符总数作为整数返回。
更多示例:
$str1 = 'Monday';
$str2 = 'Mondayy';
上面应该返回'1',因为第二个字符串有一个额外的字符。所以总共有 1 个错误。
$str1 = 'Monday';
$str2 = 'Manday';
上面应该返回'1',因为第二个字符串有一个错误的字符。所以总共有 1 个错误。
$str1 = 'Hello';
$str2 = 'World';
上面应该返回'5',因为第二个字符串不匹配第一个字符串的任何字符在它们的位置。所以总共有 5 个错误。
【问题讨论】:
-
strcmp()返回的值没有任何意义。只有它的标志很重要。 -
谢谢,我会更多地研究这些方法,以便更好地理解它们:)
标签: php