我正在使用usercake生成指向不同权限的链接。
如果我想要超链接,一切正常,我添加了一个图像位并且它破坏了代码,它会加载,但整个地址栏就像没有权限一样。
之前:
//Links for permission level 3 (xx)
if ($loggedInUser->checkPermission(array(3))){
echo "<div id='xx'>
<ul>
<li><a href='xx.php'>xxx</a></li>
</ul></br ></div>";
}
在
//Links for permission level 3 (xx)
if ($loggedInUser->checkPermission(array(3))){
echo "<div id='xx'>
<ul>
<li><a href="xxx.php"><img src="xx"></a></li>
</ul></br ></div>";
}
它只是让菜单栏消失。
有什么想法吗?我错过了一些明显的东西吗?
- 更新 是因为我还没有正常逃脱?
答案 0 :(得分:2)
"
个字符将终止字符串文字,如果不使用连接运算符(.
或,
),则代码将抛出语法错误。
您需要使用\
转义它们:
if ($loggedInUser->checkPermission(array(3))){
echo "<div id='xx'>
<ul>
<li><a href=\"xxx.php\"><img src=\"xx\"></a></li>
</ul></br ></div>";
}
如果不这样做,因为你没有在字符串中输出任何变量,你可以使用'
(单引号)来开始和终止文字,这意味着你不必转义里面的双引号它。例如:
if ($loggedInUser->checkPermission(array(3))){
echo '<div id="xx">
<ul>
<li><a href="xxx.php"><img src="xx"></a></li>
</ul></br ></div>';
}
答案 1 :(得分:0)
从帖子中的语法高亮显示中可以看出,双引号/单引号存在问题。
您的代码应如下所示:
//Links for permission level 3 (xx)
if ($loggedInUser->checkPermission(array(3))){
echo "<div id='xx'>
<ul>
<li><a href='xxx.php'><img src='xx'></a></li>
</ul></br ></div>";
}
您的外部引号应保持双倍,但字符串中的所有引号都应为单引号。 这也是有意义的,因为您希望保持代码的一致性。如果您在字符串中使用了单引号,那么请保留该单引号,除非绝对必须使用double,在这种情况下您可以转义引号:
<li><a href=\"xxx.php\"><img src=\"xx\"></a></li>
答案 2 :(得分:0)
只需关闭然后重新打开PHP标记即可。尽可能将HTML从代码中分离出来......它更干净,性能更高;)
根据文档其余部分的结构,您可以从PHP中提供的 control structures alternative syntax 中受益(我建议在这种情况下使用)
//Links for permission level 3 (xx)
if ($loggedInUser->checkPermission(array(3))) :
?>
<div id='xx'>
<ul>
<li><a href='xxx.php'><img src='xx'></a></li>
</ul>
</div>
<?php endif;