【问题标题】:unexpected T_CONSTANT_ENCAPSED_STRING意外的 T_CONSTANT_ENCAPSED_STRING
【发布时间】:2018-11-06 13:45:07
【问题描述】:

我正在使用带有 PHP 5.3.5 在 XAMPP 服务器上运行的 CakePHP,我不断收到错误消息 语法错误,意外的 T_CONSTANT_ENCAPSED_STRING 第 38 行

第 38 行是“已发布”,

代码

<div id="center_content">
<h2>Post Listings</h2>
<p>Here is a list of existing posts</p>
<div>
</div>
<?php
if (isset($posts) && is_array($posts))
{
?>
<table>
<tr>
<td>
<b>ID</b>
</td>
<td>
<b>title</b>
</td>
<td>
<b>content</b>
</td>
<td>
<b>Last Modified</b>
</td>
<td>
<b>published<b>
</td>
<td colspan="2"><b>&nbsp;&nbsp;Action</b></td>
</tr>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id'];?></td>
<td><?php echo $post['Post']['title'];?></td>
<td><?php echo $post['Post']['content'];?></td>
<td><?php echo $post['Post']['modified'];?></td>
<td>
<?php echo $html->link(ife(
$post['Post']['published'] == 1', 
'Published',
'Unpublished),
'/posts/'.ife($post['Post']['published'] == 1',
'disabled','enable').'/'.$post['Post']['id']
 );
?>
</td>
<td>
<?php echo $html->link(
'Edit',
'/posts/edit'.$post['Post']['id']);?>
</td>
<td>
<?php echo $html->link(
'Delete',
'/posts/delete/'.$post['Post']['id']);?>
</td>
</tr>

<? endforeach; ?>
<?php
if (sizeof($posts) == 0) {
?>
<tr style= "background-color:#cccccc;">
<td colspan="6">
<span style="font-size: 17px;">
No post found.
</span>
</td>
</tr>
<?php
}
?>
</table>
<br/>
<?php
}
?>
</div>

就是这样,注意我正在使用 CakePHP MVC 框架和 PHP 5.3.5 运行应用程序

【问题讨论】:

  • 那么前面的一两行呢?
  • 语法错误的问题是它们通常出现在错误消息中给出的行之前的一两行。也就是说,我不知道那个逗号是做什么用的,但我想不出它遵循逻辑运算的原因。
  • @MarkBaker 似乎您在缩进代码时不小心删除了语法错误。 :P 和 @OP,你的 IDE/代码编辑器的语法高亮与那些不合适的引号看起来有点奇怪吗?

标签: php html cakephp


【解决方案1】:

改成

 <?php echo $html->link(ife(
'$post['Post']['published'] == 1', 
'Published',
'Unpublished'),
'/posts/'.ife('$post'['Post']['published'] == 1',
'disabled','enable').'/'.$post['Post']['id']
);
?>

<?php echo $html->link(ife(
$post['Post']['published'] == 1', 
'Published',
'Unpublished),
'/posts/'.ife($post['Post']['published'] == 1',
'disabled','enable).'/'.$post['Post']['id']
);
?>

您只需要在 $post 之前删除单引号

【讨论】:

  • 感谢它的工作,但现在我收到以下错误消息。错误:语法错误,意外的 T_CONSTANT_ENCAPSED_STRING 文件:C:\xampp\htdocs\cakephp\app\View\Posts\index.ctp 行:38
  • 我再次更新了我的答案。我从未使用过 CakePHP。所以让我知道这是否正确。
  • 糟糕!它不起作用,它完全注释掉了相关代码下方的所有其他代码。
  • 不应该的。里面有偶数个引号。
  • 整个问题现已更新。感谢您提供的任何帮助。
【解决方案2】:

试着让它更具可读性:

$isPublished = ($post['Post']['published'] == 1) ? true : false;

echo $html->link(
  ife($isPublished, 'Published','Unpublished'),
  '/posts/' . ife($isPublished, 'disabled', 'enable') . '/' . $post['Post']['id']
);

【讨论】:

    【解决方案3】:
     $post['Post']['published'] == '1', 
    

    【讨论】:

      【解决方案4】:

      这对我有用...你有一个老式的 php 标签,并且在错误的地方有单引号。

      我不确定“ife”是什么,很可能是 if 语句出错了?

      <div id="center_content">
      <h2>Post Listings</h2>
      <p>Here is a list of existing posts</p>
      <div>
      </div>
      <?php
      if (isset($posts) && is_array($posts))
      {
      ?>
      <table>
      <tr>
      <td>
      <b>ID</b>
      </td>
      <td>
      <b>title</b>
      </td>
      <td>
      <b>content</b>
      </td>
      <td>
      <b>Last Modified</b>
      </td>
      <td>
      <b>published<b>
      </td>
      <td colspan="2"><b>&nbsp;&nbsp;Action</b></td>
      </tr>
      <?php foreach ($posts as $post): ?>
      <tr>
      <td><?php echo $post['Post']['id'];?></td>
      <td><?php echo $post['Post']['title'];?></td>
      <td><?php echo $post['Post']['content'];?></td>
      <td><?php echo $post['Post']['modified'];?></td>
      <td>
      <?php echo $html->link(
          ($post['Post']['published'] == 1 ? 'Published' : 'Unpublished'),
          '/posts/' . 
          ($post['Post']['published'] == 1 ? 'disabled' : 'enabled') .
          '/' . $post['Post']['id'] 
          );
      ?>
      </td>
      <td>
      <?php echo $html->link(
      'Edit',
      '/posts/edit'.$post['Post']['id']);?>
      </td>
      <td>
      <?php echo $html->link(
      'Delete',
      '/posts/delete/'.$post['Post']['id']);?>
      </td>
      </tr>
      
      <?php endforeach; ?>
      <?php
      if (sizeof($posts) == 0) {
      ?>
      <tr style= "background-color:#cccccc;">
      <td colspan="6">
      <span style="font-size: 17px;">
      No post found.
      </span>
      </td>
      </tr>
      <?php
      }
      ?>
      </table>
      <br/>
      <?php
      }
      ?>
      </div>
      

      【讨论】:

        猜你喜欢
        • 2012-03-10
        • 2012-11-13
        • 2014-02-25
        • 2015-01-23
        • 2011-07-17
        • 1970-01-01
        • 2017-11-04
        相关资源
        最近更新 更多