2009-12-26 3 views
3

up2longlong2ip과 같은 기능을 내장 한 PHP를 사용하여 IP 주소를 먼저 10 진수 표기법으로 변환하면 쉽게이를 수행 할 수 있습니다. 난 그냥 운동으로 표준 IP 주소 표기법을 사용하여 동일한 작업을 수행 할 수 있기를 원합니다.정의 된 시작 주소에서 정의 된 끝 주소로 IP 주소를 증가시키는 PHP 스크립트 작성에 대해

제가 생각하는 문제는 다음과 같습니다. 시작 IP 주소, 192.168.1.100 및 종료 IP 주소, 201.130.22.10을 예로 들어 보겠습니다. 해당 범위의 모든 주소 번호 (192.168.1.100, 192.168.1.101, ..., 201.130.22.9, 201.130.22.10)를 인쇄하는 프로그램을 만듭니다.

시작 주소의 첫 번째 8 진수가 종료 주소의 첫 번째 8 진수와 일치 할 때까지 루프를 중첩 된 루프로 만드는 것이 좋습니다. 그런 다음 프로그램이 종료 주소에 도달하여 끝날 때까지 두 번째 옥텟에 대해 동일한 코드 블록을 실행하십시오.

방금 ​​프로그래밍을 배우기 시작 했으므로 생각이나 글쓰기의 코드가 우아하지 않을 수도 있습니다. 네가이 일을했다면 어떻게 할 수 있니? 이 같은

답변

6

뭔가 :

<?php 

// works only for valid range 
$start_ip = '10.0.0.1'; 
$end_ip = '10.0.20.1'; 

$start_arr = explode('.',$start_ip); 
$end_arr = explode('.',$end_ip); 

while($start_arr <= $end_arr) 
{ 
    echo implode('.',$start_arr) . '<br>'; 

    $start_arr[3]++; 
    if($start_arr[3] == 256) 
    { 
     $start_arr[3] = 0; 
     $start_arr[2]++; 
     if($start_arr[2] == 256) 
     { 
      $start_arr[2] = 0; 
      $start_arr[1]++; 
      if($start_arr[1] == 256) 
      { 
       $start_arr[1] = 0; 
       $start_arr[0]++; 
      } 
     } 
    } 
} 

?> 
+0

예! 감사!!!! 그것은 작동하고 나는 이것이 내가 펜과 종이를 사용했던 컴퓨터를 벗어 났기 때문에 약간의 코드를 작성해 왔던 코드보다 더 효율적이라고 생각합니다. 내가 그것을 가질 때 그것을 전에주고 그것을 게시 할 것입니다. 스크립트는 매력처럼 작동합니다. 다시 한 번 감사드립니다. – alexis

+0

항상 즐거움 :). 물론 준비가되면 코드를 게시하십시오. 건배! – codaddict

1

이 훨씬 덜 복잡하다 :

<?php 

// works only for valid range 
$start_ip = ip2long('10.0.0.1'); 
$end_ip = ip2long('10.0.20.1'); 

while($start_ip <= $end_ip){ 
    echo long2ip($start_ip).'<br>'; 
    $start_ip++; 
} 

?>