【问题标题】:Codeigniter php short tags not workingCodeigniter php短标签不起作用
【发布时间】:2013-03-29 21:13:56
【问题描述】:

我目前正在关注这个基本的 Codeigniter 教程,作者在这个 view/post_index.php 页面中使用了这个类似的代码

if (!isset($posts)){ ?>
    <p> No Post to display </p>
<?php
} else {
    foreach ($posts as $row){
?>
    <h2> <?=$row['title']?> </h2>
        <p> <?=$row['post'] ?></p>

<?php
    }
}
?>

我得到一个空白页面

<h2> <?=$row['title']?> </h2>
<p> <?=$row['post'] ?></p>

在我的来源中。

但是当我使用这个时

    <h2> <?php echo $row['title']?> </h2>
    <p> <?php echo $row['post'] ?></p>

我很好。它显示了我所有的帖子。我正在运行 wamp(刚刚从网站上下载了 64 位和 Apache 2.4、2.2E 版本,除了我看不出与他们拥有的所有其他 4 个软件包有太大区别......) Apache 版本:2.2.21
PHP 版本:5.3.10

发生了什么事?

谢谢。

【问题讨论】:

  • =$之间加一个空格? &lt;?= $row['title'] ?&gt;
  • codeigniter 有配置参数 $config['rewrite_short_tags'] = FALSE; 在这种情况下它应该是 TRUE

标签: php codeigniter php-shorttags


【解决方案1】:

这通常意味着您没有启用短标签(大多数 PHP php.ini 文件。

在启用它们之前,我建议您阅读https://softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php - 使用短标签语法有利有弊。

@IMSoP 也做了一个非常有效的说明:

具体来说,您需要 short_open_tag 选项 (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag) 已启用 如果使用 PHP <?= ... ?> 的情况不需要,只有潜在的 有问题&lt;? ... ?&gt;

【讨论】:

  • 具体来说,如果使用 PHP the short_open_tag option。从 5.4 开始,此设置仍然存在,但对于 &lt;?= ... ?&gt; 情况不需要,只有可能有问题的 &lt;? ... ?&gt;
  • @IMSoP 这似乎值得单独回答 - 这样做,我会支持它。否则,我可以编辑我的问题以引用您的内容。
  • 正要自己将其编辑到您的答案中,为了总体利益。正如其他人在这里评论的那样,“它们只是互联网点”:)
  • 我们在谈论 Codeigniter!
  • @IMSoP 是的,我也不关心分数——它看起来像是可以独立存在的东西。无论如何,感谢您的帮助。
【解决方案2】:

如果你想使用short_tags,你需要short_tags,你必须在application/config/config.php启用它们

$config['rewrite_short_tags'] = TRUE;`

请查看文档Codeigniter Documentation

文档清楚地说:

注意:如果您发现本页描述的语法不起作用 在您的服务器上,可能是您的 PHP 中禁用了“短标签” ini 文件。 CodeIgniter 将选择性地即时重写短标签, 即使您的服务器不支持,也允许您使用该语法 它。此功能可以在您的 config/config.php 文件中启用。

请注意,如果您确实使用此功能,如果 PHP 错误是 在您的视图文件中遇到的错误消息和行号将 不能准确显示。相反,所有错误都将显示为 eval() 错误。

【讨论】:

  • @IMSoP 是,但是 pffff,短标签 pffff
  • 如果您完全使用 PHP 作为模板语言(我个人不会,但我知道许多框架和 CMS 都这样做),那么 &lt;?=&lt;? echo 的简写对我来说似乎很好。只有 &lt;? 是个问题,这就是为什么在 PHP 5.4 中将两者分开
  • 平心静气,做你想做的事吧
  • 如果你不是那么忙于讽刺,你可以写一个有用的答案来解释 CodeIgniter 可以替代更改 PHP ini 设置,我当然不知道。
猜你喜欢
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 2012-07-07
  • 2013-05-16
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
相关资源
最近更新 更多