Итак, я полагаю, вы просто хотите, чтобы потенциальные аббревиатуры игнорировались, правильно? Ну, есть несколько мыслей. Во-первых, вы можете сделать скрипт, который игнорирует что-либо с 3 или менее буквами. На мой взгляд, это не отличное решение. Как насчет «этого», «the» и т. Д.? Второй использует словарь известных слов для запуска ucwords()
. Yuck - это было бы невероятно облагаться налогом для такой, казалось бы, простой задачи!
Я бы рекомендовал просто игнорировать все, что есть все-шапки. Таким образом, независимо от того, что такое аббревиатура (или длина), он будет игнорировать его. Что-то вроде этого может быть достаточно:
$phrase = "Hello this is a TeSt pHrAse, to be tested ASAP. Thanks.";
$chunks = explode(" ", $phrase);
$result = "";
foreach($chunks as $chunk){
if(!ctype_upper($chunk)) {
$result .= ucwords($chunk) . " ";
} else {
$result .= $chunk . " ";
}
}
$result = rtrim($result);
Результат:
Hello This Is A Test Phrase, To Be Tested ASAP. Thanks.
Это не самое элегантное решение, это просто что-то я вроде думал, так как читать ваш вопрос. Однако, если вы знаете свои акронимы будет заглавными, это пропустит их полностью и только в заголовке ваши фактические слова.
Предостережение
Пример, приведенный выше, не будет работать с аббревиатурой присоединилась к слову тира, подчеркивание и т.д. Это работает только на расстоянии. Вы можете легко подстроить выше, чтобы ваши потребности, и сделать его немного более интеллектуальным. Тем не менее, я хотел быть очень ясным, что это может не удовлетворить всех потребностей!
Кроме того, этот пример вкратце рассмотрим вашу примерную фразу. К сожалению, если вы не используете словарь или количество строк в цепочке, это будет самое близкое к вам. Это решение - минимальная работа для большой функциональности. Конечно, словарь со сравнением будет отлично работать (либо словарь акронимов, либо слов в любом случае), но даже тогда было бы очень сложно обновляться. Имена будут отбрасывать словарь слов, безопасный для изменения в заголовок. Менее часто используемые аббревиатуры, безусловно, не будут в словаре акронимов. К сожалению, для всех решений есть бесконечные предостережения. Выберите то, что лучше для вас.
Надеюсь, это поможет. Если у вас возникнут какие-либо вопросы, прокомментируйте это, и я постараюсь сделать все возможное, чтобы помочь.
Случайность
Одна последняя вещь. Я использовал ucwords()
. Не стесняйтесь использовать все, что захотите.Я уверен, что вы уже знаете разницу, но проверить это:
Best function for Title capitlization?
Всегда хорошо, чтобы точно знать, какой инструмент лучше всего подходит для этой работы. Опять же, я уверен, что вы знаете свои собственные потребности, и я уверен, что вы выбрали правильный инструмент. Просто подумал, что это интересное чтение, которое может помочь любому, кто наткнется на это.
Заключительные мысли
Вы можете использовать комбинацию указанных выше примеров пользовательских портного собственное решение. Часто очень удобно комбинировать методы, тем самым уменьшая недостатки каждого метода.
Надеюсь, что это поможет, удачи вам!
Если вы хотите помочь, вы должны сообщить нам критерии для слов, которые вы хотите преобразовать, а какие нет. –
Разбейте строку и передайте ей только те части, которые вы хотите выполнить. – chris85