Php回声在哪里"和'在字符串中使用?

时间:2012-04-09 17:38:55

标签: php javascript html string

字符串如下所示:

<form id="unban" method="post" action="unban.php?uid=<? echo $uID; ?>">
                <input type="hidden" name="name" value="" /> 
                <a onclick="document.getElementById('unban').submit();">UnBan</a>
                </form>

我需要用一堆其他变量来回应(因为有if语句所以我不能把它放在外面的php标签)但是我找不到一种方法将它存储在一个变量中并在其中使用它回声。我的回声看起来像:

echo "<tr><td>" . $row['username'] . "</td><td>" . $banBool . "</td><td>". $status ."</td><td>" . $row['full_name'] . "</td></tr>";

其中$status将是上面的表单,具体取决于if语句。

有没有办法将它作为一个字符串保留并仍然这样做?

另外,只是为了澄清javascript语法需要'target'并且不允许“target”

5 个答案:

答案 0 :(得分:2)

您可以在PHP if-block中编写普通HTML - 只需关闭并重新打开PHP标记:

<?php
if($something == $somethingelse) {
    ?>
    <form id="unban" method="post" action="unban.php?uid=<?php echo $uID; ?>">
    ...
    </form>
    <?php
}

如果你真的需要把它放在一个字符串中,只需确保通过在每个字符串之前添加一个反斜杠来逃避任何类型的引号:

$status = '<form id="unban" method="post" action="unban.php?uid='.$uID.'">
            <input type="hidden" name="name" value="" /> 
            <a onclick="document.getElementById(\'unban\').submit();">UnBan</a>
            </form>

(另请注意,你不能在变量中做回声 - 只需将字符串与变量连接起来)

答案 1 :(得分:1)

每当您输出更复杂的内容或需要两种类型的引号时,都应该使用HEREDOC字符串:

echo <<<HTML

    <tr><td> $row[username] </td><td>
    $banBool </td><td> $status </td><td>  $row[full_name] 
    </td></tr>

HTML;

注意你如何在这里避开数组键引用(表现得像双引号字符串)。

如果您需要为Javascript使用准备一个字符串,那么另外json_encode()可能是明智的。

答案 2 :(得分:0)

我喜欢用字符串中的变量回应最干净的方式是这样的:

echo "This is a string with a {$variables["variable"]} in it. If I have to use another double-quote within this string I'll escape it with a \"backslash\".";

我通常完全避免混合使用单引号和双引号(除非必要时,例如您的JavaScript函数,以帮助减少混淆。

您的HTML可以这样编写:

echo "<form id=\"unban\" method=\"post\" action=\"unban.php?uid={$uID}\">
    <input type=\"hidden\" name=\"name\" value=\"\" /> 
    <a onclick=\"document.getElementById('unban').submit();\">UnBan</a>
</form>\n";

回显的结果字符串将具有自然字符,并具有正确的空格格式。

答案 3 :(得分:0)

使用反斜杠来转义引号:\'

答案 4 :(得分:0)

你为什么不逃避报价?

echo "\"", '\''; // "'

如果不可能,请查看PHP的heredoc and nowdoc语法。第三种方法是在IF语句中间关闭PHP块并直接输出HTML。

哦,你也可以使用output-buffering: - )