정적 페이지를 생성하는 것은 매우 간단합니다. 템플릿과 템플릿 제목을 정의한 다음 str_replace를 사용하여 바꾸는 것이 가장 일반적인 방법입니다. 다른 하나는 ob_get_contents 출력을 사용하여 html을 얻는 것입니다. 권장되지 않는 또 다른 방법입니다. 유일한 방법은 file_get_contents를 사용하여 원격 파일에 직접 액세스한 후 저장하는 것인데 성능이 매우 낮습니다.
구체적인 방법을 간략하게 설명하면 다음과 같습니다.
1. file 함수를 사용하여 정적 페이지의 템플릿 문자열을 가져온 다음 str_replace 함수를 사용하여 교체해야 할 항목을 교체한 다음 새 파일에 씁니다.
2. PHP의 출력 제어 기능(Output Control)을 사용하여 정적 페이지 문자열을 얻은 다음 이를 새 파일에 씁니다.
$filemodel="template/it.php" //템플릿 주소
$file=fopen($filemodel,"rb"); //템플릿을 열고 파일 포인터를 가져옵니다
$temp=fread($file,filesize($filemodel)); //템플릿 파일 HTML 코드 가져오기
방법 1: ob_get_contents()
이것은 매우 편리한 방법이자 매우 일반적인 방법입니다. 구현 원칙은 먼저 캐시를 연 다음 해당 정적 페이지 파일을 만들고 캐시 콘텐츠를 쓴 다음 캐시를 지우는 것입니다.
예:
ob_strart();//버퍼 열기
$fn=date('ymdhis').rand(1000,9999).'html';//파일명 생성
require("supply.php"); //정적 페이지를 생성하기 위해 파일을 로드합니다. 백그라운드에 ob_clean()이 있으므로 표시되지 않습니다.
$fs=fopen($fn,'w');//정적 페이지 파일 열기
fwrite($fs,ob_get_contents());//정적 파일 생성
ob_clean();//캐시 지우기
방법 2: file_get_contents();
$fn=date('ymdhis').rand( 1000,9999 ).'html';
$url= 'http://'.$_SERVER['HTTP_HOST']."/";//참고
$content=file_get_contents($url);
$fs=fopen($fn,'w');
fwrite($fs,$content);
위의 참고 사항을 설명하겠습니다. URL 대신 파일 이름만 사용하는 경우 require('header.php')와 같은 참조 파일을 사용하면 내용이 표시되지 않습니다. 표시됩니다.
방법 3: str_replace()
$filemodel="supply.php"; 파일= fopen($filemodel,"w ");
$temp=fread($file,filesize($filemodel));
$temp=str_replace("[title]",$title,$temp);
$temp=str_replace("[postTime]",$postTime,$temp);
$temp=str_replace("[content]",$content,$temp);
이 방법은 매우 간단한 페이지에 적합합니다('header.php').
실제 애플리케이션에서는 정적 페이지를 생성하는 클래스를 작성할 수 있습니다.
코드 복사 코드는 다음과 같습니다./*
|
사용방법
| $shtml = 새 Shtml($Url,$FileBag,$FolderName,$fileid)
| $Url: 페이지 URL 주소
| $FileBag: 폴더 태그 1은 폴더 지정을 의미합니다.
| 2는 기본 폴더(시간(년,월,일))
| $FolderRoot html 파일 저장 경로
| $FolderName은 폴더 이름을 지정합니다. $FileBag가 2이면 빈("")으로 쓸 수 있습니다.
| $fileid 정적 페이지 이름(접미사는 기본적으로 .html)
|
|
|
/* */
클래스 Shtml
{
var $message1="오류 1: Shtml 클래스를 작성하는 것이 잘못되었습니다! 이 클래스에서 두 번째 매개변수는 1 또는 2입니다!.";
var $message2="오류 2: 파일 쓰기 오류.";
함수 __construct($Url,$FileBag,$FolderRoot,$FolderName,$fileid)
{
$this->Url = $Url;
$this->FileBag = $FileBag;
$this->FileRoot = $FolderRoot;
$this->FileName = $FolderName;
$this->fileid = $fileid;
Shtml::useFolder ();
}
/***************데이터 가져오기*******************/
공개 함수 로드 콘텐츠($Folder)
{
ob_start();
require_once $this->Url;
Shtml::writehtml ($Folder,ob_get_contents());
ob_clean();
}
/**********폴더 지정*****************/
공용 함수 useFolder()
{
if($this->FileBag==1)
{
$Folder=$this->파일이름;
}
else if($this->FileBag==2)
{
$Folder=date('Ymd',time());
}
그 외
{
종료($this->message1);
}
if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);}
Shtml::loadcontent($Folder);
}
/********** 정적 페이지 생성*****************/
공개 함수 writehtml($Folder,$cache_value)
{
$file = fopen($this->FileRoot.$Folder.'/'.$this->fileid.'.html','w ');
fwrite($file,$cache_value)
fclose($file);
}
}
$파일ID=2;
$shtml = new Shtml("http://www.jb51.net",1,"","cc",$fileid);
요약하면, 이 html 생성 프로그램 코드는 페이지 매김을 생성하지 않습니다. 기사가 많으면 기사 하나만 생성됩니다. 이를 개선하려면 여기서는 소개하지 않겠습니다. 관심 있는 친구들은 테스트하고 개선할 수 있으며, 큰 이득이 있을 것이라고 믿습니다!
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.