2012-09-01 2 views
0

나는 포스트 코드를 조작하는 함수를 만들려고하는데, 영국의 우편 번호가 다르기 때문에, 그것을 통과 시키려고 노력하고있다. (예 : "DN11AA") 그러면 다음을 반환해야합니다. "dn | dn1-1 | dn1-1aa"PHP 문자열 스트립 함수를 만드는 방법

"B32B"를 전달하는 또 다른 예는 "b | b3-2 | b3-2b"

을 반환합니다.

시간을내어 읽어 주셔서 감사합니다.

+0

가 특정 분할에 대한 논리 무엇 작동? – deceze

+0

@deceze 안녕하세요, 저는 우편 번호로 검색하여 정보를 다시 제공하는 온라인 위치 앱을 만들고 있습니다. – verheesj

+0

uk postcode는 대개 하이픈으로 쓰여지지 않습니다. – Spudley

답변

1

:

는 우편 번호를 구문 분석하는 방법에 대한 자세한 내용은 위키 백과 문서를 참조하십시오.

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); 
    } 

} 

은, 테스트, 편집

+0

"dn | dn1-5 | dn1-58aa"출력 - "dn | dn15-8 | dn15-8aa"를 출력해야합니다. – verheesj

+0

함수를 통해 다음 값을 보내면 dn151bc, b144aa, b11jl, l691dt 출력 : dn | dn1-5 | dn1-51bc, b | b1-4 | b1-44aa, b | b1-1 | b1- 1jl, l | l6-9 | l6-91dt dn | dn15-1 | dn15-1bc, b | b14-4 | b14-4aa, b | b1-1 | b1-1jl, l | l69-1 | l69-1dt 희망 사항 : – verheesj

3

영국 우편 번호를 처리하기위한 표준 정규식 코드가 있습니다.

완전히 포괄적 인 표현은 다음과 같습니다

(난 당신이 $postcode_regex라는 변수에 위의 코드를 삽입 한 가정합니다 간결) 다음과 같이 PHP에서 이것을 사용할 수 있습니다
(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}) 

:

$pc_is_valid = preg_match($postcode_regex, $input_string); 

정확히 무엇을하고 싶은지에 따라 다른 preg_xxx() 함수를 사용해야하고 위의 문자열을 수정할 수도 있지만 더 자세한 정보가 없으면 명확한 조언을하기가 어렵습니다. 이 작업을해야 http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom