2014-11-04 10 views
-2

마을 및 우편 번호 정보가있는 DB에서 가져온 문자열이 있습니다.문자열에서 우편 번호 추출 및 PHP에서 select 문 작성

$townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)'; 

<select> 
    <option value="">Please Select</option> 
    <option value="02108">02108</option> 
    <option value="02112">02112</option> 
    <option value="02116">02116</option> 
    <option value="02150">02150</option> 
    <option value="02151">02151</option> 
</select> 

있습니다 문자열이 해당 솔루션이 그렇게 다양한 도시의 숫자 된 우편 번호를 가질 수 있습니다 : 나는 다음과 같이로부터 된 우편 번호 (항상 5 자리)를 추출하고 (PHP를 사용하여) 그것에서 select 문을 작성하려면 이것을 수용 할만큼 충분히 유연해야합니다.

+0

당신은 아무것도 시도? – Yoshi

+0

@ Yoshi - 나는 약간의 폭발로 주변을 어슬렁 거리지만 작동시키지 않을 것입니다. 원래 질문에서 시도한 것을 게시 했어야합니다. 내 잘못이야! – rogerb

답변

2

이 시도 :

<?php 
    $townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)'; 

    $zips = explode(',',preg_replace('#[^,0-9]#', '', $townZip)); 

    echo '<select>'; 
    echo '<option value="">Please Select</option>'; 
    foreach($zips as $zip){ 
     echo '<option value="'. $zip.'">'. $zip.'</option>'; 
    } 
    echo '</select>'; 
?> 

위의 코드는 숫자와 쉼표를 제외한 모든 것을 제거, 당신이 필요로 된 우편 번호를 제공 쉼표와 함께 폭발. 그런 다음 zipcode 배열을 반복하여 select를 만듭니다.

[업데이트]]

그것은 조금 지저분한 볼 것이다 그러나 당신은 다음과 같이 된 우편 번호와 마을 이름을 얻을 수 있습니다

<?php 
    $townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)'; 

    $zips = explode(',',preg_replace('#[^A-Za-z,0-9(]#', '', $townZip)); 

    echo '<select>'; 
    echo '<option value="">Please Select</option>'; 
    $prev = ''; 
    foreach($zips as $zip){ 
     $temp = explode('(',$zip); 
     if(isset($temp[1])){ 
      $prev = $temp[0]; 
      $temp[0] = $temp[1]; 
     } 
     echo '<option value="'. $temp[0].'">'. $prev. '-' . $temp[0].'</option>'; 
    } 
    echo '</select>'; 
?> 
+0

감사합니다. 이것은 잘 작동합니다. 정말 감사합니다. 예를 들어 마을 이름을 옵션에 포함시키기 위해이를 조정할 수있는 방법이 있습니까? rogerb

+0

다시 한번 감사드립니다. 마을 이름이 포함 된 솔루션은 잘 작동합니다. 고맙습니다! – rogerb

+0

문제 없음 :) 기꺼이 도와 줬습니다. –