PHP - 在PHP问题中返回确认

时间:2018-04-24 18:07:54

标签: javascript php html

有人可以帮我解决下面的问题:

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?');"

谢谢!

3 个答案:

答案 0 :(得分:2)

如果你想使用相同的引号你在字符串本身内打开字符串,你应该逃避它。 例如:

$var = 'Hello, let's go!';
echo $var;

此代码将抛出一个解析错误,因为这是PHP看到代码的方式:

  1. )新变量$ var。

  2. )是一个字符串,使用单引号'声明。

  3. )在开场引号之后我们有'你好,让'

  4. )现在PHP需要某种有效的代码运算符,如.和下一个字符串或;,但它会获得一些字符,这些字符被视为指令而不是字符串,因为它们在引号之外,

  5. )PHP抛出一个解析错误。

  6. 要解决此问题,您可以使用反斜杠\ 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解释器将单引号内的所有内容视为字符串。

文档: PHP: Variables - Manual

答案 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>";

然而,还有更好的方法。

将PHP插入HTML

(而不是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>

使用这种方法,您不必担心转义引号,并且它允许您在整个元素中使用常规引号。