2012-02-08 2 views
-6

나는이 일을하여 PHP 태그를 에코하기 위해 노력하고있어. 무슨 일이 벌어지는지는 페이지에 아무 것도 표시되지 않지만 소스 코드는 "<?php echo "teste"; ?>"PHP 태그를 반향하는 방법?</p>이 <pre><code>echo "<?php echo "test"; ?>"; </code></pre> <p>결과는 따옴표없이 단지 '테스트'해야하지만, 내 코드가 작동하지 않습니다 :

입니다. 대부분 여러분이 왜 이것을하고 싶은지 알고 싶을 것입니다. 나는 내 자신의 템플릿 시스템을 만들려고 노력하고있다. 가장 간단한 방법은 file_get_contents을 사용하고 내가 원하는 것을 str_replace으로 바꾼 다음 echo을 사용하는 것입니다.

문제는, 템플릿 파일에서 페이지를 에코 할 때 작동하지 않는 PHP 함수가 있어야한다는 것입니다. 또 다른 간단한 방법이 있습니까? 아니면 그냥 내 질문에 대답하면 많은 도움이 될 것입니다!

template.tpl :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>[__TITULO__]</title> 
</head> 
<body > 
<p>Nome: [__NOME__] <br /> 
Email: <a href="mailto:[__EMAIL__]">[__EMAIL__]</a><br /> 

<?php 
if ($cidade != "") {?> 
    Cidade: [__CIDADE__]<br /> 
    <?php 
} 
?> 

Telefone: ([__DDD__])&nbsp;&nbsp;[__TELEFONE__] <br /> 
Fax: 
([__DDDFAX__])&nbsp;&nbsp;[__FAX__] <br /> 
Interesse: [__INTERESSE__]<br /> 
Mensagem: 
[__MENSAGEM__] </p> 
</body> 
</html> 

index.php를

<?php 
$cidade = "Teste"; 
$file = file_get_contents('template.php'); 

$file = str_replace("[__TITULO__]","Esse Título é téste!", $file); 
$file = str_replace("[__NOME__]","Cárlos", $file); 
$file = str_replace("[__EMAIL__]","[email protected]", $file); 

if ($cidade != "") { 
    $file = str_replace("[__CIDADE__]",$cidade, $file); 
} 

echo $file; 

?> 

나는이 바로 표시되지 모두 해결할 수 있습니다 여기에

내가 달성하기 위해 노력하고 있습니다 무엇의 예입니다 div는 내용이 없습니다. 같은 난 템플릿을 가지고 있고, 그 안에 내가이 div의 경우 :

<div id="content1">[__content1__]</div> 
<div id="content2">[__content2__]</div> 

나는이 콘텐츠 1을 설정 템플릿을 대체 할 내용을 설정하고 사업부의 content2가 표시되지 않습니다 컨텐츠 (2)를 설정하지 시간의 경우입니다. ..

+0

PHP 매뉴얼에서 "이스케이프 처리"를 찾으십시오. –

+2

''형식이 잘못된 HTML입니다. 따라서 렌더링 된 출력에 나타나지 않습니다 (소스에 있어야합니다). 템플릿 솔루션을 찾고 있습니까? [Twig] (http://twig.sensiolabs.org/), [Smarty] (http://www.smarty.net/), [Dwoo] (http : // dwoo .org /), [기타 ...] (https://www.google.com/search?q=php+template+engine). 날 믿어 .- 너의 현재 생각은 나쁘다. 또는 --- 브라우저에 가시적 인 PHP 코드 단편을 출력하려고합니까? –

+0

그게 아니라, 소스 코드에있는 것처럼 echo 코드를 PHP 코드로 렌더링하고 싶습니다. –

답변

2

사용 htmlspecialchars

<>

0

당신은 혼동해서는 안 여기 소스 코드의 두 세트를 다루고있는 &lt;에와 &gt; 변환됩니다 그 - 역할을 r code (모든 코드는 <?php ?> 태그에 있음) 및 모든 HTML 태그가 포함 된 클라이언트 (또는 브라우저) 코드 서버 코드의 출력은 코드이며 브라우저로 전송됩니다. 여기 은 실제로입니다. PHP 태그를 성공적으로 울리고 있지만, 브라우저에 아무런 의미가 없습니다. 브라우저가이를 무시하고 아무 것도 표시하지 않는 이유는 클라이언트 코드를 보지 않는 한 아무 것도 표시하지 않기 때문입니다.

이 스타일로 템플릿을 구현하려면 PHP 코드가 없어야하며, 결과 문자열 ($file에 저장되어 있음) 자체는 마치 클라이언트에 직접 반향 되 지 않고 PHP처럼 실행되어야합니다. . 이를 수행하는 다양한 방법이 있습니다. 하나는 문자열에서 PHP 태그를 구문 분석하고 PHP 태그 안에없는 모든 내용을 반향시키고 모든 내용에 eval()을 실행하는 것입니다.

관련 문제