2014-01-11 3 views
1

HTML과 PHP가 결합 된 템플릿 페이지가 있습니다. 전체 내용을 다른 페이지로 출력하고 싶지만 코드를 포함하여 출력하기 전에 내용을 먼저 동적으로 수정하고 싶습니다.웹 페이지를 문자열로 읽어서 수정 한 다음 출력하십시오.

정확하게 이해하면 eval()은 PHP 단어와 오프닝 <?을 제거해야합니다. 내가 먼저 출력하기 전에 파일 내에서 코드를 편집 할 필요가 말했듯이

$str = file_get_contents($template); 
    [Create an array of changes to make] 

    $str = str_replace($changes,"",$str); 

    $changes2 = array(); 
    $changes2[0] = '?php'; 
    $str = str_replace($changes2,"?",$str); 
    $str = substr($str,3); 
    eval("\$str = \"$str\";"); 
    echo $str; 

나는 원래 그냥 iframe의 내용을 열었지만, (그리고 수정하지 않고 :

지금까지 나는 다음있어 원래 템플릿 코드).

내가 생각하는 유일한 방법은 템플리트를 문자열로 읽는 것, 필요한 것을 변경하는 것, 임시 파일에 문자열의 내용을 쓰는 것, 그리고 임시 파일을 읽는 것입니다.

그러나 이렇게하는 것은 길어진 방법입니다.

누구나 올바른 방법을 알고 있습니까?

+3

하나님의 사랑을 위해서'eval()'을 사용하지 마십시오. 'eval()'이 답이라면, 당신은 틀린 질문을 던졌습니다! ;) – BenM

+0

괜찮습니다. 나는 그것을 사용하지 않더라도, 나는 단지 임시 파일을 만드는 것 이외의 다른 방법을 모른다. – jimbeeer

+0

변경해야 할 사항은 무엇입니까? DOM 조작이라면 jQuery를 사용하여이 작업을 수행 할 수 있습니까? – BenM

답변

0

사용 output buffering

그것은 당신이 (버퍼) 출력을 캡처 다시 다음, 당신이 원하는대로 출력을 변수에 배치 할 수 있습니다.

PHP가 처리 한 HTML을 편집해야하는 경우 출력 버퍼링이 필요합니다.

간단한 예 : 귀하의 경우

<?php 

ob_start(); 

echo "Hello World"; //Even though it was echoed, not getting displayed since buffered 

$out = ob_get_clean(); //Get buffer into variable, then delete it, without displaying. 
$out = strtolower($out); 

var_dump($out); //Now output the new value, will show "hello world". 

, 변경 사항을 변경, 출력을 캡처, include 관련 파일 (보다는 file_get_contents()를) 거라고, 다음 고정 출력을 에코.

+0

html – jimbeeer

+0

아니요. php 코드를 변경해야합니다. 사용자의 접근 방식이 잘못된 것 같습니다. 동적으로 변화하는 PHP 코드는 거의 해답이 아니며, 이는 십만 번째 경우에 해당하는 느낌이 들지 않습니다. 당신의 목적이 무엇인지 나누시겠습니까? –

+0

위의 답변에 대한 의견에서 나는 그것이 무엇인지 말해주었습니다. 그것은 단지 웹 사이트의 관리자 끝입니다. – jimbeeer

관련 문제