PHP注入HTML中的switch语句

问题描述

|
<? switch ($var): ?>
  <? case 1: ?>
    It\'s 1!
  <? break ?>
<? endswitch ?>
我想做类似的事情,换句话说,在PHP模板中使用switch语句。使用if语句可以做到这一点。上面的代码PHP 5.3中生成
Parse error: Syntax error,unexpected T_INLINE_HTML,expecting T_ENDSWITCH or T_CASE or T_DEFAULT
PHP文档建议这样做应该可行。 有人可以确认这行不通吗,还是可以告诉我我做错了什么? 谢谢。     

解决方法

我在php文档中读到您的示例不起作用。   switch语句和命令之间的任何输出(包括空格)   第一种情况将导致语法错误。例如,这是无效的 尝试以下方法:
<div>
<?php switch($variable): 
case 1: ?>
    <div>
    Newspage
    </div>
<?php break; ?>
<?php case 2: ?>
    </div>
    Forum
    <div>
<?php break; ?>
<?php endswitch; ?>
</div>
http://php.net/control-structures.alternative-syntax     ,你有
?>\\n\\n<?
在您切换之后
switch($var):
echo \"\\n\\t\";
case 1:
可以将脚本视为包含HTML的PHP​​,而不是修饰的HTML。 PHP二进制文件首先获取文件。 您可能想使用HEREDOC之类的东西来回显未转义的HTML。     ,我使用这种友好的格式,经过测试可以正常工作:
<? switch($var) : case 1 : ?>

  <div>One</div>

<? break; case 2 : ?>

  <div>Two</div>

<? break; case 3 : ?>

  <div>Three</div>

<? break; endswitch; ?>
    ,将开关或foreach语句与在php 5.6上运行的新型短标签一起使用时,我遇到了类似的问题。 就我而言:改变
<?=

  switch ($number_of_columns) {
    case \"1\":
        echo \'<div class=\"col-sm-12 col-md-12\" >\';
        break;
    case \"2\":
        echo \'<div class=\"col-sm-12 col-md-6\" >\';
        break;
    case \"4\":
        echo \'<div class=\"col-sm-6 col-md-3\" >\';
        break;
    default:
        echo \'<div class=\"col-sm-6 col-md-4\" >\';
    }
?>
 <?php 
      switch ($number_of_columns) {
        case \"1\":
            echo \'<div class=\"col-sm-12 col-md-12\" >\';
            break;
        case \"2\":
            echo \'<div class=\"col-sm-12 col-md-6\" >\';
            break;
        case \"4\":
            echo \'<div class=\"col-sm-6 col-md-3\" >\';
            break;
        default:
            echo \'<div class=\"col-sm-6 col-md-4\" >\';
        }
    ?>
导致没有语法错误,即语法错误,意外的\'switch \'(T_SWITCH)