【问题标题】:How to echo a lot of html with variables and functions?如何用变量和函数回显大量 html?
【发布时间】:2013-07-17 21:40:57
【问题描述】:

所以我得到了以下信息:我正在创建动态页面(基于页面 ID(通过 $_GET 获得))。我的页面包含一个 $_get 检查(只有在设置了 $_GET 变量时才会显示 html)和带有 html 标签 + php 变量的页面的回显。比如:

<table>
<tr> 
  <td>Name:</td>
  <td>myFunction('foo');</td>
</tr>
</table>

等等等等等等

我将 myincludedfile.php 上方的这段代码包含到我的主文件中,其中包含函数 include 和 isset($_get) 。

echo include 'myincludedfile.php';

但是,这似乎不起作用。尽管显示了 html,但变量和函数仍然是文本并且不会被执行。

谁能帮帮我?

【问题讨论】:

  • 去掉回声,就做include 'myincludedfile.php';

标签: php html function


【解决方案1】:

改成这样:

<table>
<tr> 
  <td>Name:</td>
  <td><?=myFunction('foo');?></td>
</tr>
</table>

这样你实际上是在模板中打开一个小的 PHP 块。 &lt;?=&lt;?php echo 的简写符号,但如果启用简写,它取决于您的服务器配置。

如果函数不返回值,而是回显它,您也可以省略 =,并像这样执行函数:&lt;? myFunction('foo'); ?&gt; 或长符号:&lt;?php myFunction('foo'); ?&gt;

通常,您不需要在文件的开始处使用&lt;?php。只是&lt;?php .. ?&gt;标签内的所有内容都作为php执行,其余的被认为是静态输出。

顺便说一句。包含文件时不需要使用echo

【讨论】:

  • 这里是the appropriate page of the PHP manual。请注意,&lt;?= 始终在 PHP 5.4 及更高版本上启用(即使 &lt;? 本身未启用),尽管由于并非所有人都在使用 5.4,这仍然“取决于您的服务器配置”。
  • 是的,但感谢您的补充。我希望每个人都能很快使用 5.4,因为我不知道你为什么不想要这个简短的符号,尤其是在模板文件中。 :)
  • = ?> 和 有什么区别? ?> ?
  • @Frank &lt;? foo() ?&gt;&lt;?php foo() ?&gt; 的简写——它只是运行 PHP 代码; &lt;?= foo() ?&gt;&lt;?php echo foo() ?&gt; 的简写 - 它运行代码,然后回显(输出)返回的结果。不幸的是,&lt;? 也用于其他目的(例如在 XML 中),因此启用它可能会导致问题; &lt;?= 不被 PHP 以外的任何东西使用,这就是为什么该版本从 PHP 5.4 开始始终可用。另请参阅我发布的手动链接。
【解决方案2】:

这是另一种选择

$myfunction = myFunction('foo');

echo <<<CODE
  <table>
  <tr> 
    <td>Name:</td>
    <td>$myFunction</td>
  </tr>
  </table>
CODE;

include 'myincludedfile.php';

这称为heardoc语法http://php.net/manual/en/language.types.string.php#example-75

【讨论】:

  • 仅供参考:这称为HEREDOC 语法。这实际上是一个字符串表示法。因此,您不能调用函数,尽管您可以包含变量(因此将函数结果存储在康纳答案中的变量中)。此外,大多数编辑器不会对这个字符串中的 HTML 进行语法高亮,因为对他们来说它只是一个 PHP 字符串,而不是一段 HTML。
  • 这也意味着这只是一个字符串表达式,可能不会回显任何内容。你可能需要echo &lt;&lt;&lt;CODE ....
【解决方案3】:

您必须像这样包含文件:

  include 'myincludedfile.php';

你正在做的是回显 php 文件

【讨论】:

  • echo 不是必需的,但这也不是问题的原因。
  • 这仍然给了我相同的结果(编辑:正如 GolezTrol 所说)
【解决方案4】:

看:

  <?php
  $html="<h1>Hello</h1>";

  function hello()
  {
  echo "<h1>Hello</h1>";
  }

  function hello2()
  {
  ?>
  <h1>Hello</h1>
  <?php
  }
  ?>

所有这些都做同样的事情。
要使用它们,您可以执行以下操作:

  <?php
  hello(); // Hello
  hello2(); // Hello
  echo $html; // Hello
  ?>

我认为我没有得到您需要的东西,但请尝试更具体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多