2014-10-01 53 views
0

是否有可能有这样一个PHP模板文件:解析PHP页面和html插入变量

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>sdfds</title> 
</head> 
<body> 
    <div class="some-content"> 
     <?php some_content(); ?> 
    </div> 

</body> 
</html> 

并将其加载到一个变量,没有呼应,但仍解析的some_content()结果。假设some_content()<p>oh yes!</p>相呼应,那么这需要成为变量内容的一部分。这很重要的原因是我需要返回内容而不是回显内容。

我看过file_get_contents(),但这不会解析的PHP,所以该div是空的。我需要类似parse_file_and_get_content()

+0

你写了'some_content()'是这个用户定义的吗? – Ghost 2014-10-01 14:20:02

+0

您是否考虑过使用输出缓冲区或真实模板,而不需要在其中执行PHP,而是替换某些字符串标识符? – 2014-10-01 14:20:22

+0

研究输出缓冲 – PeeHaa 2014-10-01 14:20:37

回答

1

是的,这是可能的,与输出缓冲系统。

ob_start(); 
include("your_external_php_file.php"); 
$parsed_html = ob_get_clean(); 

include()将在文件中执行任何<?php ... ?>代码块,并且当缓冲器是活动的转播系统将捕获由该文件执行的任何输出。然后你获取缓冲区的内容,现在$parsed_html具有所有的HTML,以及在那里你的PHP函数调用输出的任何内容。

+0

这似乎和我想要的完全一样。谢谢!。跟进:使用缓冲系统时是否有任何缺点或限制? – 2014-10-01 14:38:12

+1

并非真正的缺点。问题在于你没有解决根本问题(通过使用某种模板引擎),而是尝试修复结果/后果。 – 2014-10-01 14:40:08

+3

@Rik_S:php ** IS **模板引擎。 OP的做法没有什么错,基本上所有其他基于PHP的模板引擎都在做什么,除了他们拥有自己的膨胀/不可读语法和解析开销之外。 – 2014-10-01 14:44:48