2012-01-02 4 views
1

안녕하세요, 저는 dinamically 생성 된 (PHP로) html 코드를 변수에 저장하고 Ajax 요청에 대한 회신으로 보낼 수 있습니다.PHP 변수에 html 페이지 저장

$error='none'; 
$result = array('teh_html' => $html, 'error' => $error); 
$result_json = json_encode($result); 
echo $result_json; 

내가 할 수있는 :

<?php 
$c=count($services); 
?> 
<table> 
<?php 
for($i=0; $i<$c; $i++){ 
echo "<tr>"; 
echo "<td>".$services_global[$i][service] ."</td>"; 
echo "<td>".$services_global[$i][amount]."</td>"; 
echo "<td>&euro; ".$services_global[$i][unit_price].",00</td>"; 
echo "<td>&euro; ".$services_global[$i][service_price].",00</td>"; 
echo "<td>".$services_global[$i][service_vat].",00%</td>"; 
echo "</tr>"; 
} 
?> 
</table> 

내가 모든 생성 된 HTML 코드 (나머지)를 저장하고 같은 JSON 인코딩 변수로 에코해야합니다 의 내가 무작위로 같은 테이블을 생성 해 봅시다 어쩌면 html 파일을 생성하고 그것을 읽어

ob_start(); 
//all my php generation code and stuff 
file_put_contents('./tmp/invoice.html', ob_get_contents()); 
$html = file_get_contents('./tmp/invoice.html'); 

그러나 그것은 단지 틀린 소리 난 정말에만 코드를 생성하지만 필요가 없습니다 때문에 대표로 내 메인 페이지로 전송 아약스 요청에 대해서는 자원 낭비 일뿐입니다. 제안 사항이 있으십니까? 데이터가 내가 제안 후 다시 생성 훨씬 비싼 경우, 당신은 단지 적절한 출력 버퍼링 기능을

// turn output buffering on 
ob_start(); 

// normal output 
echo "<h1>hello world!</h1>"; 

// store buffer to variable and turn output buffering offer 
$html = ob_get_clean(); 

// recall the buffered content 
echo $html; //=> <h1>hello world!</h1> 

More about ob_get_clean()

+0

내 제안 : "구체적인 문구를 문안하십시오"... – rdlowrey

+0

나는 코드에서 곧바로 html을 생성하지 않을 것을 제안합니다. 어떤 종류의 템플릿 엔진을 사용하는 것이 더 낫습니다. (단지 PHP도 포함됩니다). 내가 좋아하는 것은 Twig (http://twig.sensiolabs.org/) – petraszd

답변

9

memcached을 사용하십시오.

그렇지 않으면 매번 재생성하거나 프런트 엔드에서 캐시합니다.

+0

입니다. 문제는 내가 HTML을 반향하면 AJAX 요청에 대한 회신으로 받아 들여지지 않을까요? 나는 그것을 반향시키지 않고 html을 생성 할 필요가있다. – g0dl3ss

+0

html을 변수에 저장하고 언제든지 사용할 수 있습니다. 당신이 그것을 필요로 할 때까지 반향을 강요하지 않는다. ... –

+0

ob_start();로 내부 버퍼에 html을 저장하기 위해; 내가 그것을 생성하고 에코해야합니다. – g0dl3ss

0

를 사용할 수있는 파일에 저장하지 않아도

0
for($i=0;$i<=5;$i++) 
{ 
    ob_start(); 
    $store_var = $store_var.getdata($i); // put here your recursive function name 
    ob_get_clean(); 
} 

function getdata($i) 
{ 
    ?> 
    <h1> 
    <?php 
     echo $i; 
    ?> 
    </h1> 
    <?php 
    ob_get_contents(); 
}