2015-12-27 6 views
0

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

Рассмотрим следующие строки:

  • ThisIsAText
  • SOS

Это первая строка должна стать This Is A Text, а второй должен просто оставаться SOS.

Мой подход был:

$old_str = "ThisIsAText"; 
$arr = explode ('/(?=[A-Z])/', $old_str); 
$new_str = implode (" ", $arr); 

Может ли это быть также сделано только с 1 функцией?
Кроме того, это не учитывает сокращения.

+0

Я не думаю, что взорвать выражение выражения regex ... oO – Andrew

+0

Посмотрите на ['preg_split()'] (http://php.net/manual/en/function.preg-split.php) – Jan

ответ

2

Я думаю, вы должны использовать preg_replace так:

$result = trim(preg_replace("/(?<![\^A-Z])([A-Z])/", " $1", "ThisIsAText")); 

Это добавляет пробела перед каждой буквой НЕ предваряется другой буквой.

К сожалению, это не расщепляется «ThisIsAText» правильно, потому что А затем заглавной Т.

Так лучшее определение того, что вы рассмотреть «сокращение» было бы полезно, чтобы обеспечить лучшее решение.

+0

При тестировании это с 'SOS', я получаю' SO S'. – user1170330

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