Как записать в верхнем регистре только определенные части одной строки в формате & quot; Городские запятые Инициалы & quot ;?

У меня есть одно поле местоположения, где люди могут вводить что угодно, но обычно они вводят что-то в формате «Город, инициалы». Так, например, эти записи …

New york, Ny
columbia, sc
charleston
washington, DC
BISMARCK, ND

в идеале стал бы …

New York, NY
Columbia, SC
Charleston
Washington, DC
Bismarck, ND

Очевидно, я могу использовать ucfirst() в строке для обработки первого символа, но это то, что я не уверен, как это сделать (если они вообще могут быть выполнены) …

  • С большой буквы после запятой
  • Строковый знак перед запятой (кроме первого символа)

Это легко выполнимо или мне нужно использовать какую-то функцию регулярных выражений?

-1

Решение

Вы можете просто порезать его и починить.

<?php
$geo = 'New york, Ny
columbia, sc
charleston
washington, DC
BISMARCK, ND';
$geo = explode(PHP_EOL, $geo);

foreach ($geo as $str) {

// chop
$str = explode(',', $str);

// fix
echo
(!empty($str[0]) ? ucwords(strtolower(trim($str[0]))) : null).
(!empty($str[1]) ? ', '.strtoupper(trim($str[1])) : null).PHP_EOL;
}

https://3v4l.org/ojl2M

Хотя вы не должны доверять пользователю, чтобы ввести правильный формат. Вместо этого найдите огромный список всех состояний и автоматически заполните их. Возможно, что-то вроде https://gist.github.com/maxrice/2776900 — затем подтвердите это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]