我試圖創建一個函數,它操縱郵編,但作爲在英國郵政編碼都是不同的大小即時通訊努力工作,即時通訊嘗試通過(例如「DN11AA」 )這將需要返回以下內容:「dn | dn1-1 | dn1-1aa」如何創建一個PHP字符串條函數
另一個例子是傳遞「B32B」 - 然後返回「b | b3-2 | b3-2b」
感謝您花時間閱讀此:)
我試圖創建一個函數,它操縱郵編,但作爲在英國郵政編碼都是不同的大小即時通訊努力工作,即時通訊嘗試通過(例如「DN11AA」 )這將需要返回以下內容:「dn | dn1-1 | dn1-1aa」如何創建一個PHP字符串條函數
另一個例子是傳遞「B32B」 - 然後返回「b | b3-2 | b3-2b」
感謝您花時間閱讀此:)
這應該工作。
function post($post){
for($i = 0; $i < strlen($post); $i++)
if(is_numeric(substr($post, $i, 1))){
$j=$i;
if(is_numeric(substr($post, $i+2, 1)))$j++;
return substr($post, 0, $i).'|'.substr($post, 0, $j+1).'-'.substr($post, $j+1,1).'|'.substr($post, 0, $j+1).'-'.substr($post, $j+1);
}
}
編輯,測試工作
感謝您的幫助,它近乎完美,目前輸出「dn | dn1-5 | dn1-58aa」 - 需要輸出「dn | dn15-8 | dn15-8aa」。 – verheesj
如果我通過函數發送以下值,則dn151bc,b144aa,b11j1,l691dt, , 輸出:dn | dn1-5 | dn1-51bc,b | b1-4 | b1-44aa,b | b1-1 | b1-需要輸出:dn | dn15-1 | dn15-1bc,b | b14-4 | b14-4aa,b | b1-1 | b1-1jl,l | 1n1 | ln1-2 | l69-1 | l69-1dt 希望有道理:) – verheesj
有處理英國郵政編碼的標準正則代碼。
充分全面的表達式如下:
(GIR 0AA)|(((A[BL]|B[ABDFHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2})
可以在PHP如下(爲簡便起見,我會假設你已經把上面的代碼到一個名爲$postcode_regex
變量)使用此:
$pc_is_valid = preg_match($postcode_regex, $input_string);
取決於你想用它做什麼,你可能需要使用其他preg_xxx()
功能,並可能修改上面的字符串,但它很難沒有更多的信息給予更明確的意見。
請參見維基百科的文章以獲得更多關於如何解析郵政編碼:http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom
什麼是特定分裂的邏輯是什麼? – deceze
@deceze嗨,我正在創建一個在線位置應用程序,通過郵政編碼搜索並返回信息。 – verheesj
應該指出,英國郵政編碼通常不用連字符書寫。 – Spudley