2013-11-02 2 views
0

사용자가 우편 번호를 입력하고 우편 번호가있는 간단한 우편 양식을 만들려고하는데 사용자가 링크로 리디렉션됩니다.PHP 부분 우편 번호 일치

<form method="get" action="index.php"> 
    <input type="text" class="form-control input-lg" name="postcode" id="postcode" placeholder="Postcode"> 
    <span class="input-group-btn"> 
    <input class="btn btn-default btn-lg find" name="did_submit" id="submithome" type="submit" value="Find My Matchmaker" class="searchbutton"> 
    </span> 
</form> 

그리고 PHP 스크립트 : 입력 된 우편 번호가 CV 또는 NG 인 경우

<?php 
    if(isset($_GET['postcode'])){ 
     $valid_prefixes = array(
      2 => array('NH', 'AQ'), 
      3 => array('NZ2', 'GT5'), 
      4 => array('NG89', 'NG76') 
    ); 

    foreach($valid_prefixes as $length => $prefixes) { 
     if (in_array(substr($_GET['postcode'], 0, $length), $prefixes)) { 
      header("Location: http://www.google.com/"); 
     } else { 
      echo "<script> $('#myModal').modal('show') </script>"; 
     } 
     exit; 
    }} 
?> 

그래서, 스크립트가 Google에 사용자를 리디렉션합니다

그래서, 나는이 HTML 양식을 가지고 그렇지 않은 경우 모달이 실행됩니다.

이제 질문입니다. 분명히 사용자는 CV12DB (전체 우편 번호)를 입력하고 우편 번호가없는 것처럼 모달을 가져옵니다. PHP 스크립트로 수행하려는 작업은 사용자가 입력 한 내용을 검색하고 그의 우편 번호에 CV 또는 NG 또는 SH가 포함되어 있으면 그를 Google로 리디렉션하는 것입니다.

"preg_match"를 사용하거나 배열 대신 키를 사용하여 시도했지만 행운은 없었습니다. 어떻게 작동시키는 지 알 수 없습니다.

업데이트 코드를 대체 한 후 어떤 이유로 2 글자 배열 만 인식합니다. 예를 들어 NG76PL을 입력하면 인식 할 수 없으므로 "else"로 바뀝니다.

+0

수정 된 코드 (원래 질문이 아닌 Peter van der Wal의 대답을 기반으로 함)는 잘못 배치 된 'exit;'가 있습니다. 첫 번째 루프 이후에 PHP를 종료합니다. – IMSoP

+0

고맙습니다. 현재 작동합니다. 정말 고마워요 –

답변

1

두 문자로 된 조합으로 시작해야합니까? 그런 다음 사용 : 여러 길이 접두사가있는 경우

if (in_array(substr($_GET['postcode'], 0, 2), $validatepostcode) { 
    // redirect 
} 

사용할 수 있습니다 (더 효율적으로)

for ($i = $min_prefix_length; $i <= $max_prefix_length; $i++) { 
    if (in_array(substr($_GET['postcode'], 0, $i), $validatepostcode) { 
     // redirect 
    } 
} 

또는를 :

$valid_prefixes = array(
    2 => array('NH', 'AQ'), 
    3 => array('NZ2', 'GT5'), 
); 
foreach($valid_prefixes as $length => $prefixes) { 
    if (in_array(substr($_GET['postcode'], 0, $length), $prefixes) { 
     // redirect 
    } 
} 

당신은 ^(NH|AQ|NZ2|GT5)하지만 돈과 같은 정규 표현식을 사용할 수 있습니다 많은 옵션이 있다면 좋은 해결책이 될 것이라고 생각하지 않습니다.

+0

글자 조합이 2 글자이면 3 글자와 4 글자 조합이 가능합니다 (예 : NG, NG3, NG90) –

+0

대답은, 당신이 찾고있는 것입니까? –

+0

내 게시물을 편집했습니다. 한번보세요. –

관련 문제