У меня есть одно поле местоположения, где люди могут вводить что угодно, но обычно они вводят что-то в формате «Город, инициалы». Так, например, эти записи …
New york, Ny
columbia, sc
charleston
washington, DC
BISMARCK, ND
в идеале стал бы …
New York, NY
Columbia, SC
Charleston
Washington, DC
Bismarck, ND
Очевидно, я могу использовать ucfirst()
в строке для обработки первого символа, но это то, что я не уверен, как это сделать (если они вообще могут быть выполнены) …
Это легко выполнимо или мне нужно использовать какую-то функцию регулярных выражений?
Вы можете просто порезать его и починить.
<?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://gist.github.com/maxrice/2776900 — затем подтвердите это.
Других решений пока нет …