, 나는 당신의 index.php에 추가 할 다음 코드를 제안 할 수있다 :
<?php
$var1 = 'text';
$templateVars = array('var' => $var1);
$content = file_get_contents('file.html');
foreach($templateVars as $tplVar => $tplVarContent) {
$content = preg_replace('/\{' . $tplVar . '\}/', $tplVarContent, $content);
}
echo $content;
preg_replace()
를 사용하는 이유는 무엇입니까?preg_replace()
오히려 각 교체 후 느린 속도가 느린 것으로 시작 str_replace()
보다 더 큰 텍스트 내용에 교체에서 더 나은 일을하는 것이 알려져
(Google에서 벤치 마크를 찾을 수 있습니다, 나는 그것을 찾을 수 없습니다 지금)
나중에 편집 :
나는이 일에 오전 향상을 발견했다.
<?php
$var1 = 'test';
$templateVars = array('var' => $var1);
$content = file_get_contents('tpl.tpl');
$content = preg_replace('/\{([a-zA-Z0-9_]+)\}/e', "\$templateVars['\\1']", $content);
echo $content;
나는 또한 str_replace()
솔루션에 대해 약간의 테스트를 수행했습니다. str_replace()
은 두 변수가있는 경우에만 입니다 (2-3). 6 변수가있는 preg_replace()
은 보다 2 배 빠릅니다..
preg_replace() 10000 times: 0.038811922073364seconds
str_replace() 10000 times: 0.085460901260376seconds
이 내가 속도를 테스트하기 위해 실행 된 코드입니다 : 여기
내 결과입니다 당신은 당신의 문제를 해결하기 위해 출력 버퍼링을 사용하지만 인용 부호에주의 할 수
<?php
$var1 = 'text';
$templateVars = array('var' => $var1, 'var1' => 'blabla', 'var3' => 'variable3', 'var22' => $var1, 'var133' => 'blabla', 'var3444' => 'variable3');
$content = file_get_contents('tpl.tpl');
$start = microtime(true);
for($i = 0; $i <= 9999; $i++)
{
$content = preg_replace('/\{([a-zA-Z0-9_]+)\}/e', "\$templateVars['\\1']", $content);
}
$end = microtime(true);
echo 'preg_replace() '. $i . ' times: ' . ($end - $start) . 'seconds<br>';
$start = microtime(true);
for($i = 0; $i <= 9999; $i++)
{
foreach($templateVars as $tplVar => $tplVarContent) {
$content = str_replace('{' . $tplVar . '}', $tplVarContent, $content);
}
}
$end = microtime(true);
echo 'str_replace() '. $i . ' times: ' . ($end - $start) . 'seconds<br>';
예를 들어 Smarty와 같은 일부 템플릿 엔진을 통과 할 수 있습니다. 그들은 어떻게하고 있으며 대신 템플릿 엔진을 사용할 수 있습니다. 그들은 이미 당신을 위해 그것을했습니다 –