有人可以帮我解决下面的问题:
echo ('<a href="assign.php?id=' . $id . '" onclick="return confirm('Are you sure you want to claim this ticket?');" style="text-decoration: none"><font color="FFFFFF"><b>Click here to claim ticket</b></font></a>');
我知道某些“'”存在问题,但无法解决这个问题。我在'Are'之前收到语法错误。在添加:
之前,代码行按预期工作onclick="return confirm('Are you sure you want to claim this ticket?');"
谢谢!
答案 0 :(得分:2)
如果你想使用相同的引号你在字符串本身内打开字符串,你应该逃避它。 例如:
$var = 'Hello, let's go!';
echo $var;
此代码将抛出一个解析错误,因为这是PHP看到代码的方式:
)新变量$ var。
)是一个字符串,使用单引号'
声明。
)在开场引号之后我们有'你好,让'
)现在PHP需要某种有效的代码运算符,如.
和下一个字符串或;
,但它会获得一些字符,这些字符被视为指令而不是字符串,因为它们在引号之外,
)PHP抛出一个解析错误。
要解决此问题,您可以使用反斜杠\
a.k.a'转义'字符。
例如,要解决您的问题:
echo
('<a href="assign.php?id=' . $id . '" onclick="return confirm(\'Are you sure you want to claim this ticket?\');" style="text-decoration: none"><font color="FFFFFF"><b>Click here to claim ticket</b></font></a>');
查看确认JavaScript函数中单引号周围的baskslashes \
?这告诉PHP将这些引号视为普通字符而不是字符串开始/结束声明。当您使用双引号作为字符串声明符时,同样适用于反转。
例如,当您想要显示$
的实际表示形式或任何在双引号字符串中具有特殊含义的字符时,允许直接插入变量(以及其他类似属性,如类属性)值,您将使用逃避性格。
例如:
$apples = 12;
$talk = "I have $apples \$apples. Thanks, now have a backlash! \\!";
echo $talk;
这将输出I have 12 $apples. Thanks, now have a backslash! \!
现在,你实际上并不需要逃脱转义的角色(如果没有任何东西可以逃脱它,它也会显示出来)。
阅读:PHP Manual - About Strings
答案 1 :(得分:1)
您需要通过执行'
\'
echo ('<a href="assign.php?id=' . $id . '" onclick="return confirm(\'Are you sure you want to claim this ticket?\');" style="text-decoration: none"><font color="FFFFFF"><b>Click here to claim ticket</b></font></a>');
请注意,PHP解释器将单引号内的所有内容视为字符串。
答案 2 :(得分:1)
您还可以使用常规引号在echo语句的边缘切换单引号,这样您就可以更轻松地插入$id
变量。然后,您只需要在onClick
中转义JavaScript周围的引号,并将所有其他引号切换为单引号。
echo "<a href='assign.php?id=$id' onclick=\"return confirm('Are you sure you want to claim this ticket?');\" style='text-decoration: none'><font color='FFFFFF'><b>Click here to claim ticket</b></font></a>";
然而,还有更好的方法。
(而不是HTML到PHP)
执行此操作的最佳方法是将HTML编写为HTML,并将PHP变量插入HTML中。这是最佳实践,因为它允许IDE中的语法突出显示,并且看起来更清晰/更容易阅读。
只需将整个元素写为HTML,然后在HTML中回显$id
变量(而不是在PHP echo语句中编写所有HTML)。
<a href="assign.php?id=<?=$id;?>" onclick="return confirm('Are you sure you want to claim this ticket?');" style="text-decoration: none">
<font color="FFFFFF">
<b>
Click here to claim ticket
</b>
</font>
</a>
使用这种方法,您不必担心转义引号,并且它允许您在整个元素中使用常规引号。