在PHP中,我们可以在这样的switch语句中转义为HTML:
<?php
switch($example) {
case 'caseone': { ?> <p>Case one</p> <?php } break;
case 'casetwo': { ?> <p>Case two</p> <?php } break;
}
?>
另外,我们可以设置变量:
<?php
switch($example) {
case 'caseone': $text = 'Case one'; break;
case 'casetwo': $text = 'Case two'; break;
}
?>
但是我们如何在这个伪代码中转义变量字符串?
<?php
switch($example) {
case 'caseone': $text = { ?> Case one <?php } break;
case 'casetwo': $text = { ?> Case two <?php } break;
}
?>
我想以这种方式输出大量HTML,但我不想在交换机中回显它 因为我必须在以后构建一个包含$ text变量的字符串。
我可能在这里有点蠢。
非常感谢!
答案 0 :(得分:1)
这其实很简单。你错了。你的第二个例子是你真正需要的。您不需要“转义”HTML以构建字符串(特别是如果您以后想要echo
)。如果您确实想要消除任何XSS攻击的可能性,可以使用htmlspecialchars
来转义HTML。
<?php
switch($example) {
case 'caseone': $text = "HTML string here"; break;
case 'casetwo': $text = "Other HTML string here"; break;
}
echo $text;
?>
答案 1 :(得分:0)
根据我对您的问题的理解,您希望能够将大块文本(可能包含HTML)分配给变量。最好的方法是使用这样的heredoc语法:
<?php
switch($example) {
case 'caseone':
$text = <<<EOT
Case one
Some <a href="link">HTML</a>
EOT;
break;
case 'casetwo':
$text = <<<EOT
Case two
Some other <a href="link2">HTML</a>
EOT;
break;
}
?>
使用heredoc语法,您不需要转义任何内容;开始标记和结束标记之间的所有内容都被视为文字,因此您可以轻松地使用单引号和双引号分配文本并使用插值。