【问题标题】:similar_text - string / integer comparingsimilar_text - 字符串/整数比较
【发布时间】:2015-10-27 14:31:16
【问题描述】:

这是我第一次在这里发帖,欢迎大家!

我正在尝试编写一个规则来简单地保护我的网站免受用户发布其内容的泛滥。我决定在 PHP 中使用similar_text() 函数来比较字符串(用户最后添加的字符串和当前添加的字符串),计算相似度(%)以及结果是否太高(相似度超过 90% ) 脚本不会向数据库添加记录。

这是我所拥有的:

similar_text($last_record, $new_record, $sim);
$similarity = (int) number_format($sim, 0);

if ($similarity < 90)
{
  // add the record
}
else
{
  // dont add anything
}

问题在于:if ($similarity 。我格式化数字,然后将其从字符串转换为 int 值,但脚本并不关心。

当我使用配额时,它会起作用:if ($similarity 。问题是为什么当我将值用作整数值时脚本不起作用,而当我将其用作字符串时它起作用?

【问题讨论】:

    标签: php string integer type-conversion similarity


    【解决方案1】:

    number_format 在需要整数的地方返回一个字符串。因此,与“90”的字符串比较有效,但 int 比较失败。您可以使用int_val 转换为int。

    另外,我想知道您是否还有其他问题。我获取了您的代码示例并在本地运行它,即使没有将(int) 换成int_val,它似乎也能正常工作。

    具有以下值:

    $last_record = "asdfasdfasdf";
    $new_record = "aasdfasdfasdf";
    

    $similarity 是 96 和 if 触发器的大于部分。

    使用这些值:

    $last_record = "asdfasdfasdf";
    $new_record = "fffdfasdfasdf";
    

    $similarity 是 80 和 if 触发器的小于部分。

    【讨论】:

    • 感谢您的回答。事实上这很奇怪。我使用var_dump() 函数检查$similarity,它说$similarity 是整数。
    • 很奇怪。也许这只是侥幸。如果您能接受我的回答,我将不胜感激。 :)
    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2012-02-09
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多