如何防止PHP变量和表达式在字符串中扩展

时间:2018-02-13 20:20:22

标签: php

以下文字链接在我将其直接放在我的html中时可以正常工作:

<a href="http://example.com/index.php?g=<?php echo $grade; ?>&amp;s=<?php if($slcustom29 == 0) echo 1; else echo 0; ?>">Click here to <?php echo $showOrHideText; ?>  the suggested sequence of lessons.</a>

但我想用以下代替:

<?php echo $gradeNote; ?>

在其他地方,$ gradeNote会根据学生用户的成绩分配一个字符串。经过几个小时的搜索和失败之后,我的问题是如何将这个片段作为文字字符串传递,而PHP没有尝试解析它并给我一个垃圾网址?我在这做错了什么:

$gradeNote = "<a href=\"http://example.com/index.php?g=<?php echo $grade; ?>&amp;s=<?php if($slcustom29 == 0) echo 1; else echo 0; ?>\">Click here to <?php echo $showOrHideText; ?>  the suggested sequence of lessons.</a>";

3 个答案:

答案 0 :(得分:1)

尝试这样的事情。

$s = ($slcustom29 == 0) ? 1 : 0;

$gradeNote = "<a href=\"http://example.com/index.php?g={$grade}&amp;s={$s}\">Click here to {$showOrHideText}  the suggested sequence of lessons.</a>";

任何带双引号“”的字符串都可以嵌入变量,{}不是必需的,但我总是在这样的情况下使用它们,你试图嵌入一个没有空格的变量,“$ xabc”这将返回不同的结果“{$ x} ab”

答案 1 :(得分:1)

问题是你试图将php逻辑放入字符串中。请注意,您在字符串文字中有一个IF命令。从一个小的或空的字符串开始,然后逐个插入它,而不是一行。

然后你可以回显单变量链接

答案 2 :(得分:1)

您正在PHP变量中运行<?php?>标记 。由于您已经在处理PHP,因此这些都是不必要的。

尽管引号""允许您回显评估变量,但由于您还在此字符串中运行了条件,所以&#39; 39; ll想要推断出来并简单地将结果存储为变量。我打电话给我$show

因此,您只是在寻找:

if($slcustom29 == 0) {
    $show = 1;
}
else {
    $show = 0;
}

$gradeNote = "<a href=\"http://example.com/index.php?g=$grade;&amp;s=$show\">Click here to $showOrHideText the suggested sequence of lessons.</a>";

请记住要么逃避<a href="">中的双引号,要么将它们换成单引号。

可以看到 here

希望这有帮助!