有什么方法可以在PHP中分离语法单词


Is there any method to get grammatical words separated in PHP?

如果我有一个语法正确的field_name。我想用空格来分隔它。

例如

  1. field_name是气缸配置,我希望它像气缸配置一样
  2. field_name是NoofCylinders,我希望它像NoofCylinders一样

请注意,大写不是字符串中可识别的字符,整个字符串可能很小。

有什么办法可以做到这一点吗?

有什么办法可以做到这一点吗?

是的。
而且,总有不止一种方法可以做到这一点。
数以千计的一个例子是域名expertsexchange,可以拆分为experts exchangeexpert sex change

与其为打印字段名称等琐碎的任务实现这种AI,我建议要么像PHPmyAdmin那样将它们保持原样以实现自动化目的,要么创建一个在代码中硬编码的替换表。它将为您节省在这种琐事任务上的大量时间。

有人可能会建议您将命名约定更改为下划线作为单词分隔符的方式,这可以很容易地转换为空格,但我建议不要这样做。数据库表名称不应在用户界面中使用。不要偷懒,手动创建输出字段名称。

您可以通过使用 /usr/share/dict/words 中的字典(或只是下载单词列表)来执行此操作。

伪代码中的算法将如下所示:

counter = 0
make input lowercase
loop i from 0 to length of input:
    if sub string from 0 to i of input is in dictionary:
        grammatical_words[counter] = sub string from 0 to i
        add one to counter
echo all words from grammatical_words

这样做的缺点是,任何以 a 或 i 开头的字符串基本上都会失败 - 像 algorithm 这样的字符串将被拆分为a,然后没有进一步的匹配。这意味着如果您确信不使用某些单词,则需要禁止使用它们。此外,复合词(如 oftendesktop)不会具有预期的行为。词根中有单词的单词,例如"平板电脑","移动","流行"等也会失败。

通过一些调整,这可以工作。如果您知道使用哪些单词来加快速度并避免误报,我会制作一个自定义单词列表,而不是使用系统字典。