从html中分离php

  • 本文关键字:php 分离 html php
  • 更新时间 :
  • 英文 :


我正在使用php建立一个网站。我想从html中分离php。聪明的引擎,我想可以做到,但是现在对我来说太复杂了。寻找一个快速修复和易于学习的解决方案,这也是一个公认的标准。谁来帮忙?

考虑框架或选择模板引擎

使用框架。根据你的项目,你可以选择像Slim这样的微框架,或者像Laravel这样更完整的框架。

当我编写包含大量php代码的复杂系统时,我有时会这样做(不知道您的确切项目,但它可能适合您):

创建一个php文件,其中包含所有需要的函数和变量。然后,使用.htaccess通过index.php文件加载每个页面(这样用户实际上总是使用查询字符串加载index.php)。现在,您可以使用file_get_contents(或类似的)将html页面加载到一个变量中(我现在将其称为$body);可以使用preg_replace修改该变量。

例如:在html文件中,将<title>Sometext</title>写成{title}替换用您实际需要的代码替换{title}:

$body = str_replace('{title}', $title, $body);

当所有替换完成后,只需回显$body

只需声明大量变量并在模板中使用它们:

在你的应用程序中:

function renderUserInformation($user)
{
  $userName = $user->userName;
  $userFullName = $user->fullName;
  $userAge = $user->age;
  include 'user.tpl.php';
}
在user.tpl.php:

User name: <?=$username?><br>
Full name: <?=userFullName?><br>
Age: <?=$userAge?>
通过将

放在函数中,可以限制变量的作用域,这样就不会污染全局作用域和/或意外地覆盖现有变量。这样,你就可以在一个单独的php文件中"准备"需要显示的信息,你所需要做的就是输出这些变量。

当然,如果您必须这样做,您仍然可以在模板中添加更复杂的PHP代码,但要尽量少这样做。

将来,你可能会把这个'render'函数移动到一个单独的类中。在某种程度上,这个类是一个视图(在本例中是一个用户视图),它是创建MVC结构的一个步骤。(但现在不用担心这个)

寻找快速修复和易于学习的解决方案

METHOD 1(最懒;然而,你仍然保留突出显示编辑器,如notepad++)

<?php
   // my php
   echo "foo";
   $a = 4;
   // now close the php tag -temporary- 
   // to render some html in the laziest of ways
?>
<!-- my html -->
<div></div>
<?php
   // continue my php code

METHOD 2(更有组织;使用模板文件,在你传递了一些值之后)

<?php
   // my php
   $var1 = "foo";
   $title = "bar";
   $v = array("var1"=>"foo","title"=>"bar");   // preferrable
   include("template.php");
?>

template.php

<?php
   // $var1, $var2 are known, also the array.
?>
<div>
 <span> <?php echo $v["title"]; ?> </span>
</div>

我个人更喜欢方法2,我在我自己的CMS中使用它,它使用了大量的模板和数据数组。

另一个解决方案当然是先进的模板引擎,如Smarty, PHPTemplate等。你需要很多时间来学习它们,我个人不喜欢他们的方法(新的语言风格)
function renderUserInformation($user)
{
  $userName = $user->userName;
  $userFullName = $user->fullName;
  $userAge = $user->age;
  include 'user.tpl.php';
}

最新更新