【问题标题】:How to validate text as not gibberish in PHP?如何在 PHP 中验证文本不是乱码?
【发布时间】:2011-06-27 11:36:21
【问题描述】:

使用 PHP 验证字符串是否为乱码的最佳方法是什么?

例如,如果我从用户那里得到一个长度必须至少为 250 个字符的字符串,我如何判断他们输入的是合法文本(例如真实单词)还是只是胡言乱语以符合最少字符(例如 asdlfkjefksjlfkjldskfjelkef )?

我曾考虑将单词数作为一种选择,但用户仍然可以将他们的胡言乱语隔开(例如 asdlf kjef ksjlf kjl dskfje lkef),因此需要在此基础上进行另一种检查。

有什么方法可以检查一个字符串的至少一半是否包含真正的字典单词,或者类似的东西?

这个问题的最佳解决方案是什么?

谢谢。

【问题讨论】:

  • 这取决于预期的自然语言 - 可能是“胡言乱语”只是“不是您期望的语言”。除此之外,字典方法听起来可行。
  • 这是一个棘手的问题,虽然这里有一个马尔可夫链的 PHP 实现:stackoverflow.com/questions/4672822/…
  • 您要验证的数据类型是什么?将输入多少文本?是段落还是文章?
  • 以上问题,语言为英文,长度为一段左右。基于此,还有其他想法吗?谢谢。

标签: php string validation


【解决方案1】:

因为Colorless green ideas sleep furiously,你不能正确地做到这一点。

【讨论】:

  • 嗯,这取决于“不是乱码”的标准是什么——语法正确就够了吗?
  • @Piskvor OP 没有说。我假设“胡言乱语”延伸到语义级别,然后这很困难,即使马尔可夫链可以给你一个概率评级。我只是不明白为 webapp 实现它是如何证明这项努力的。我可能可以将“适当地”替换为“在合理的努力范围内”。
【解决方案2】:

你可以试试Bloom filter

【讨论】:

    【解决方案3】:

    您可以浏览您的字典并从用户输入中删除所有字典单词,然后检查其余单词的长度

    【讨论】:

      【解决方案4】:

      您可以查看Markov Chains。简单地说,这个算法确定字符序列是否看起来像是属于一起的。它不一定会告诉你这不是胡言乱语,但它应该能找出诸如“ksjhglah 等”之类的东西。

      Markov text generators

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 2014-06-02
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多