2011-11-12 63 views
1

我必須格式化爲以下字符串:PHP發現美國各州的代碼串

「休斯敦,得克薩斯州」 - STR1
「芝加哥,IL」 - STR2
「西雅圖」 - STR3

當給定上述str1/str2/str3中的每一個時,我想提取「TX」,「IL」,「WA」,如果狀態碼存在字符串中(即字符串末尾有2個大寫字母)使用PHP &正則表達式..任何指針..我無法從給我的方法的所有字符串可靠地提取此信息。

+0

對於正則表達式試試這個好用的工具:http://txt2re.com – madc

回答

0

你不需要使用正則表達式這一點。假設狀態代碼只能出現在一個字符串的結尾處,你可以用這個小功能:

/** 
* Extracts the US state code from a string and returns it, otherwise 
* returns false. 
* 
* "Houston, TX" - returns "TX" 
* "TX, Houston" - returns false 
* 
* @return string|boolean 
*/ 
function getStateCode($string) 
{ 
    // I'm not familiar with all the state codes, you 
    // should add them yourself. 
    $codes = array('TX', 'IL', 'WA'); 

    $code = strtoupper(substr($string, -2)); 

    if(in_array($code, $codes)) 
    { 
     return $code; 
    } 
    else 
    { 
     return false; 
    } 
} 
1

嘗試/, [A-Z]{2}$/(刪除逗號如果不重要)。

+1

或者使用'/([ AZ] {2})$ /'並且抓取組而不是整個比賽。 –

1

用途:

$stateCode=trim(end(array_filter(explode(',',$string)))); 
1
substr($string, -2); // returns the last 2 characters 
相關問題