Ben gibi şehir, eyalet, ülke dizeleri var:
NEW YORK, NY, US
REDMOND, WA, US
US
HONG KONG
CALGARY, CA
E. SYRACUSE, NY, US
Ben onların uygun durumda (; vs New York, NY, ABD) onları dönüştürmek istiyorum. Hızlı bir şekilde PHP bunu yapmak nedir?
'Uygun durumda' derken neyi kastediyorsunuz? Ben kadarıyla tam olarak tam olarak ne bu veri ve bunu nasıl ele almak istiyorum açıklamak eğer güzel olurdu bu yüzden gereken ne kadar şey eksik bir his var.
Kullanmak ucfirst
to make the first letter of each word uppercase, and you can use explode
a> ilgili bölümlere dize ayırmak için yapabilirsiniz:
$str = "NEW YORK, NY, US";
list($city, $state, $country) = explode(',', $str);
$city = ucfirst(strtolower($city));
Örneklerde size garanti istiyorsanız strtoupper
a> büyük harfle olmasına karşın, devlet ve ülke için bir şey yapmak gerek olmazdı verdi.
Ben kafamın üst kapalı herhangi bir örnek düşünemiyorum rağmen bu verir ne olursa olsun çıkış, belirli bir şehir yazmak için "doğru" yolu olmayabilir hangi durumlar vardır eminim gibi bu, ancak, zor bir önermedir Ben bazı vardır eminim.
Ben de sadece bir şehir ("HONG KONG") var bir kaç sadece bir ülke var hatları ("ABD") ve bazı vardır fark ediyorum - dize ne içerdiğini belirlemek için güvenilir bir yolu yoktur. Sen benzeri ülkelerin ve şehirlerin ve bir liste ile eşleşen deneyebilirsiniz, ama o bunu en iyi bir tahmin oyunu olacak ile gelip ne olursa olsun bir çözüm gibi görünüyor.
Bir sözlük olmadan her zaman orada bazı kenar durumlar olabilir, bu yüzden bu yaklaşım iyi olacağını düşünüyorum
vinko@parrot:~$ cat cap.php
<?php
$list = "NEW YORK, NY, US
REDMOND, WA, US
US
HONG KONG
CALGARY, CA
E. SYRACUSE, NY, US";
$countries = array("HONG KONG", "US", "CA");
$states = array("NY","WA");
$list = split("\n",$list);
$out = "";
foreach ($list as $line) {
list($first,$second,$third) = split(",",$line);
//Here you check in a dictionary for country/state to
//like this:
if (!in_array($first,$countries) && !in_array($first,$states)) {
$first = ucwords(strtolower($first));
}
if ($third) { $out.= $first.",".$second.",".$third; }
else if ($second && !$third) { $out.= $first.",".$second; }
else { $out.= $first; }
$out.= "\n";
}
echo $out;
?>
vinko@parrot:~$ php cap.php New York, NY, US Redmond, WA, US US HONG KONG Calgary, CA E. Syracuse, NY, US