2012-04-22 2 views
2

Если у меня есть field_name, которое является грамматически правильным. И я хочу разделить его, используя пространство.Есть ли способ получить грамматические слова, разделенные в PHP?

Например,

  1. field_name является CylinderConfiguration, и я хочу это как Конфигурация цилиндра
  2. field_name является NoofCylinders, и я хочу это как Нет Цилиндры

Обратите внимание, что капитализация не является e распознаваемый символ в строках целая строка может быть маленькой.

Есть ли способ сделать это?

+0

Я хочу сделать функцию для этого, которая возьмет строку и выведет грамматически правильную (пробел, разделенный пробелом). – Thompson

+7

Признание английского языка не является сильной стороной компьютеров. – geekosaur

+0

Все имена полей Паскаль обсажены? –

ответ

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 

Обратной стороной с этим является то, что любая строка, начинающаяся с или я в принципе не в состоянии - строка, как algorithm будет разбит на a и затем не имеют дальнейших совпадений. Это означает, что вам нужно будет запретить определенные слова, если вы уверены, что не используете их. Кроме того, составные слова, такие как often или desktop, не будут иметь ожидаемого поведения. Слова, которые имеют слово в своем корне, например. «планшет», «мобильный», «популярный» и т. д. также потерпят неудачу.

С некоторой настройкой это может работать. Я бы сделал пользовательский список слов вместо использования системного словаря, если вы знаете, какие слова вы используете для ускорения работы и чтобы избежать ложных срабатываний.

5

Есть ли способ сделать это?

Да.
Более того, всегда есть более чем один способ сделать это.
Один пример из тысяч других - это доменное имя expertsexchange, которое можно разделить либо как experts exchange, либо expert sex change.

Вместо реализации такого рода ИИ для такой тривиальной задачи, как имена полей печати, я предлагаю либо оставить их как для автоматизированных целей, например, PHPmyAdmin, либо создать таблицу замены, жестко закодированную в коде. Это сэкономит вам время на такую ​​мелочь.

Можно предложить вам изменить свое соглашение об именах на метод подчеркивания-как-слово-разделитель, который можно легко преобразовать в космос, но я бы посоветовал это сделать. Названия таблиц базы данных arent 'предназначены для использования в пользовательском интерфейсе. Не ленитесь, создайте имена полей вывода вручную.

+1

хороший пример, но у моих полей нет такой путаницы. :) – Thompson

+5

также 'pen island' .... –

+2

@Mohan Я прочитал «NoofCylinders» как «Noof цилиндры». Что я знаю, звучит как торговая марка. «Нет» на самом деле не «грамматический». – deceze

Смежные вопросы