지금 제 가 알 고 있 는 phop 이 정적 페이지 를 만 드 는 방법 을 정리 해 보 겠 습 니 다.

8944 단어 htmlsqlPHPmysqlFP
   <?php
    $title = "http://";
    $file = "TwoMax Inter test templet,<br>author:Matrix@Two_Max";
    $fp = fopen ("temp.html","r");
    $content = fread ($fp,filesize ("temp.html"));
    $content = str_replace ("{file}",$file,$content);
    $content = str_replace ("{title}",$title,$content); 
    //       
    $list = '';
    $sql = "select id,title,filename from article";
    $query = mysql_query ($sql);
    while ($result = mysql_fetch_array ($query)){
    $list .= '<a href='.$root.$result['filename'].'   target=_blank>'.$result['title'].'</a><br>';
    }
    $content .= str_replace ("{articletable}",$list,$content); 
    //      
    // echo $content; 
    $filename = "test/test.html";
    $handle = fopen ($filename,"w"); //      ,    
    /*
               
    */
    if (!is_writable ($filename)){
     die ("  :".$filename."   ,         !");
    }
    if (!fwrite ($handle,$content)){ //       
     die ("    ".$filename."  !");
    } 
    fclose ($handle); //     
    die ("    ".$filename."  !");
  ?>

 먼저 원 리 를 말 하 다.어떤 낙타 가 그렇게 많은 자 료 를 조사해 보 니 어떤 방법 을 써 도 원 리 는 같다 는 것 을 발견 했다.프로그램 으로 해당 하 는 데 이 터 를 읽 어서 모드 의 변 수 를 바 꾸 고 정적 페이지 를 만 드 는 것 입 니 다.php 에서 주로 사용 하 는 것 은 fread () 와 fwirte () 를 사용 하 는 것 이다.정적 페이지 가 생 성 되면 수정 문제 가 걸 립 니 다.여기 서 정규 일치 하 는 방법 으로 모델 에서 변 경 된 부 위 를 교체 할 수 있다.그러나 이런 방법 은 너무 번거롭다. 낙타 가 추천 하 는 방법 은 원래 생 성 된 모형 을 직접 잘라 내 고 다시 생 성 하 는 것 이다. 하하, 정말 모든 것 이 끝났다.
 
 
  또 설명해 야 할 것 은 이런 정적 페이지 를 만 드 는 방법 은 일반적으로 변화 가 빈번 하지 않 은 페이지, 예 를 들 어 정보의 최종 페이지 에 사용 된다 는 것 이다.목록 페이지 에 대해 서 는 정보 업데이트 가 잦 지 않 으 면 바람 직 하 다.현재 인터넷 상에 서 정적 페이지 를 만 들 수 있 는 블 로그 나
포럼 프로그램 은 모두 백 스테이지 'html 페이지 생 성' 단 추 를 수 동 으로 클릭 하여 '반자동' 으로 html 를 생 성 합 니 다.일부 정 보 량 이 많은 포 털 사 이 트 는 통 하지 않 는 다.정적 페이지 를 '정적' 이 라 고 부 르 는 이 유 는 자동 으로 바 꿀 수 없 기 때문이다.정보 목록 이 하루 에 100 번 씩 업데이트 되면 정적 목록 페이지 는 100 번 다시 생 성 된다.만약 내 가 이런 항목 이 10 개 있다 면, 생각해 봐 도 충분히 피 를 토 할 수 있 을 것 이다.
 
 
 
  자, 잡담 은 그만 하고 이제 실제 프로그램 시연 을 살 펴 보 자.
 
 
 
  first: ob 함 수 를 이용 하여 만 든 둥둥 입 니 다. 코드 가 간단 하고 효율 도 상대 적 으로 높 습 니 다.낙타
 
         높 은 사람 이 얻 은 소스 코드 를 약간 바 꾸 었 다.
 <?php
    ob_start();
    @readfile("http://localhost/?package=pricab&place_port=4");
    $text = ob_get_flush();


    $myfile = fopen("myfile.html","w");


    $text  = str_replace ("{counent}",$string,$text);
    fwrite($myfile,$text);
    ob_clean();
  ?>
 
정적 페이지 를 생 성하 더 라 도 동적 으로 그 부분 을 읽 는 것 은 보존 해 야 하기 때문에 데 이 터 를 데이터베이스 에 삽입 한 후에 url 을 readfile 함수 에 전달 한 다음 에 캐 시 를 읽 으 면 fwrite 가 정적 페이지 를 생 성 할 수 있 습 니 다. 이것 은 낙타 가 가장 좋아 하 는 방법 입 니 다.코드 줄 수가 가장 적 고 효율 이 가장 높다.꼬 부 랑 꼬 부 랑
4. 567915. 누 드 페이지, 즉 단순 한 내용 으로 머리, 꼬리, 메뉴 가 없다.그래 야 자신의 모델 my file. html 를 자 유 롭 게 맞 출 수 있 습 니 다.정적 페이지 만 생 성 을 요구 하 는 것 이 라면,
ob_start();
    @readfile("http://localhost/?package=pricab&place_port=4");
    $string = ob_get_flush();

    $myfile = fopen("myfile.html","w");
    fwrite($myfile,$string);
    ob_clean();
 
넘 어 갈 수 있어 요.
 
   second: 보통 정적 html 페이지 를 생 성 합 니 다.
   이런 방법 은 순서대로 하 는 것 이다.
str_replace 대체
   우선 최종 내용 페이지 만 들 기:
   $title = "http://siyizhu.com테스트 템 플 릿 ";
   $file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
   $fp =
fopen ("temp.html","r");
   $content =
fread ($fp,filesize ("temp.html"));
   $content =
str_replace ("{file}",$file,$content);
   $content =
str_replace ("{title}",$title,$content);
   $filename = "test/test.html";
   $handle =
fopen ($filename,"w"); //파일 포인터 열기, 파일 만 들 기
   /*
 파일 이 생 성 되 고 쓸 수 있 는 지 확인 합 니 다.
   */
   if (!
is_writable ($filename)){
     die ("파일:". $filename. "쓸 수 없습니다. 속성 을 확인 하고 다시 시도 하 십시오!");
   }
   if (!
fwrite ($handle, $content) {/ 파일 에 정 보 를 기록 합 니 다.
     die ("파일 생 성". $filename. "실패!");
   }
  
fclose ($handle); / / 포인터 닫 기
 
  
die ("파일 생 성". $filename. "성공!");
   이 단 계 는 간단 합 니 다. 단순 한 변 수 를 바 꾸 면 됩 니 다. 정적 목록 페이지 를 만 들 려 면 원리 도 마찬가지 입 니 다. 프로그램 으로 글 목록 을 만 들 고 큰 변수 로 모듈 의 변 수 를 바 꾸 고 목록 의 페이지 를 넘 기 는 것 도 마찬가지 입 니 다. 물론 정보 업데이트 가 있 으 면 목록 페이지 를 넘 기 는 것 도 다시 생 성 해 야 합 니 다.
   <?php
    $title = "http://";
    $file = "TwoMax Inter test templet,<br>author:Matrix@Two_Max";
    $fp = fopen ("temp.html","r");
    $content = fread ($fp,filesize ("temp.html"));
    $content = str_replace ("{file}",$file,$content);
    $content = str_replace ("{title}",$title,$content); 
    //       
    $list = '';
    $sql = "select id,title,filename from article";
    $query = mysql_query ($sql);
    while ($result = mysql_fetch_array ($query)){
    $list .= '<a href='.$root.$result['filename'].'   target=_blank>'.$result['title'].'</a><br>';
    }
    $content .= str_replace ("{articletable}",$list,$content); 
    //      
    // echo $content; 
    $filename = "test/test.html";
    $handle = fopen ($filename,"w"); //      ,    
    /*
               
    */
    if (!is_writable ($filename)){
     die ("  :".$filename."   ,         !");
    }
    if (!fwrite ($handle,$content)){ //       
     die ("    ".$filename."  !");
    } 
    fclose ($handle); //     
    die ("    ".$filename."  !");
  ?>
 
 페이지 넘 기기:
  우리 가 페이지 를 지정 할 때, 페이지 당 20 편 입 니 다. 한 채널 목록 에 있 는 글 은 데이터 베 이 스 를 통 해 45 개 로 조회 되 었 습 니 다. 먼저 우 리 는 조 회 를 통 해 다음 과 같은 인 자 를 얻 을 수 있 습 니 다. 1, 총 페이지 수, 2, 각 페이지 수. 두 번 째 단 계 는 for ($i = 0; $i < allpages; $i +) 입 니 다. 페이지 요 소 를 얻 고 분석 하고 글 이 생 성 되 며, 모두 이 순환 에서 실 행 됩 니 다. 다른 것 은 die ("파일 만 들 기". $filename."성공!"; 이 문 구 는 제거 하고 순환 후의 디 스 플레이 에 놓 습 니 다. 이 문 구 는 프로그램 실행 을 중단 하기 때 문 입 니 다. 예:
<?php
 $fp = fopen ("temp.html","r");
 $content = fread ($fp,filesize ("temp.html"));
 $onepage = '20';
 $sql = "select id from article where channel='$channelid'";
 $query = mysql_query ($sql);
 $num = mysql_num_rows ($query);
 $allpages = ceil ($num / $onepage);
 for ($i = 0;$i<$allpages; $i++){
 if ($i == 0){
 $indexpath = "index.html";
 } else {
 $indexpath = "index_".$i."html";
 }
 $start = $i * $onepage;
 $list = '';
 $sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
 $query_for_page = mysql_query ($sql_for_page);
 while ($result = $query_for_page){
 $list .= '<a href='.$root.$result['filename'].' target=_blank>'.$title.'</a><br>';
 }
 $content = str_replace ("{articletable}",$list,$content);
 if (is_file ($indexpath)){
 @unlink ($indexpath); //      ,   
 }
 $handle = fopen ($indexpath,"w"); //      ,    
 /*
              
 */
 if (!is_writable ($indexpath)){
 echo "  :".$indexpath."   ,         !"; //   echo
 }
 if (!fwrite ($handle,$content)){ //       
 echo "    ".$indexpath."  !"; //   echo
 } 
 fclose ($handle); //    
 }
 fclose ($fp);
 die ("        ,      ,              !");
?>

  
 
 
third: smarty 모드 정적 페이지 생 성
낙타
fetch 함수, 그 기능 은 free ad () 와 유사 하여 정적 페이지 를 만 들 수 있 습 니 다.
이 예 는 여러분 이 꼭 보고 싶 으 면 낯 이 익 습 니 다. 네, 스마트 매 뉴 얼 에서 fetch 함수 에 관 한 예, hoho.  어떤 낙타 가 빌려 쓰 면 공식 적 인 예 보다 항상 전형 적 이 잖 아!
caching = true; // only do db calls if cache doesn't exist if(!$smarty->is_cached("index.tpl")) {   // dummy up some data   $address = "245 N 50th";   $db_data = array(                "City" => "Lincoln",                "State" => "Nebraska",                "Zip" => "68502"              );   $smarty->assign("Name","Fred");   $smarty->assign("Address",$address);   $smarty - > assign ($db data);} / / capture the output $output = $smarty - > fetch ("index. tpl"); / / 이곳 이 관건 입 니 다 / / do something with $output here echo $output; / / / oho  아웃 풋 결과 보 셨 죠?  그래서?
 
$fp = fopen("archives/2005/05/19/0001.html", "w");fwrite($fp, $content);fclose($fp);
?>
?>

좋은 웹페이지 즐겨찾기