PHP注入HTML中的switch语句

Zna*_*kus 26 php templates switch-statement

<? switch ($var): ?>
  <? case 1: ?>
    It's 1!
  <? break ?>
<? endswitch ?>
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情,换句话说,在PHP模板中使用switch语句.这可以使用if语句.上面的代码Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT在PHP 5.3中生成.在PHP文档表明,这应该是可能的.

有人可以确认这不起作用,或者说,告诉我我做错了什么?

谢谢.

j_f*_*yre 53

我在php doc中读到你的例子不应该工作.

switch语句和第一种情况之间的任何输出(包括空格)都将导致语法错误.例如,这是无效的

试试这个:

<div>
<?php switch($variable): 
case 1: ?>
    <div>
    Newspage
    </div>
<?php break; ?>
<?php case 2: ?>
    </div>
    Forum
    <div>
<?php break; ?>
<?php endswitch; ?>
</div>
Run Code Online (Sandbox Code Playgroud)

http://php.net/control-structures.alternative-syntax

  • 谢谢!(对于其他人来说,代码来自[此评论](http://se2.php.net/manual/en/control-structures.alternative-syntax.php#80668)) (4认同)

Emy*_*myr 16

你有

?>\n\n<?
Run Code Online (Sandbox Code Playgroud)

在你的开关变成之后

switch($var):
echo "\n\t";
case 1:
Run Code Online (Sandbox Code Playgroud)

将您的脚本视为PHP,其中包含HTML,而不是装饰HTML.PHP二进制文件首先获取文件.

您可能希望使用像HEREDOC这样的东西来回应未转义的HTML.


Dav*_*ide 5

我使用这种友好的格式,经过测试可以正常工作:

<? switch($var) : case 1 : ?>

  <div>One</div>

<? break; case 2 : ?>

  <div>Two</div>

<? break; case 3 : ?>

  <div>Three</div>

<? break; endswitch; ?>
Run Code Online (Sandbox Code Playgroud)