Что вы подразумеваете под «надлежащим случаем»? У меня такое чувство, что я что-то упускаю настолько, насколько вам нужно, поэтому было бы неплохо, если бы вы могли точно уточнить, что это за данные и как вы хотите их обработать.
Вы можете использовать ucfirst
, чтобы сделать первую букву каждого слова заглавной, и вы можете использовать explode
, чтобы разделить строку на соответствующие сегменты:
$str = "NEW YORK, NY, US";
list($city, $state, $country) = explode(',', $str);
$city = ucfirst(strtolower($city));
В приведенных вами примерах вам не нужно ничего делать для штатов и стран, хотя есть strtoupper
, если вы хотите гарантировать, что они прописные.
Это сложное предложение, однако, поскольку я уверен, что есть ситуации, в которых любой вывод, который он дает, может не быть «правильным» способом написания конкретного города, хотя я не могу придумать ни одного примера из топа моей головы, я уверен, что есть некоторые.
Я также замечаю, что есть несколько строк, в которых есть страна («США»), а в некоторых есть только город («ГОНКОНГ») - нет надежного способа определить, что содержит строка. Вы можете попытаться сопоставить его со списком стран и городов и т. Д., Но кажется, что любое решение, которое вы придумали, в лучшем случае будет игрой в догадки.