是否有任何方法可以在PHP中分离语法单词?

时间:2012-04-22 08:06:15

标签: php function

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

例如,

  1. field_name是 CylinderConfiguration ,我希望它像 Cylinder配置
  2. field_name是 NoofCylinders ,我希望它像 No of Cylinders
  3. 请注意,大写字母不是字符串中可识别的字符,整个字符串可能很小。

    有没有办法做到这一点?

2 个答案:

答案 0 :(得分:5)

  

有没有办法做到这一点?

是。
此外,总有不止一种方法。
其他数千个例子中的一个例子是域名expertsexchange,可以将其分为experts exchangeexpert sex change

我没有为像打印字段名这样的繁琐任务实现这种AI,我建议将它们保留为自动目的,如PHPmyAdmin,或者在代码中创建一个硬编码的替换表。它可以为你节省大量的时间。

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

答案 1 :(得分:1)

您可以使用/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等复合词不会产生预期的行为。在其根中包含单词的单词,例如“平板电脑”,“手机”,“热门”等也会失败。

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