1

一个字符串如下所示:

<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 语法需要“目标”并且不允许“目标”

4

5 回答 5

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>

(另请注意,您不能在变量中执行回显 - 只需将字符串与变量连接)

于 2012-04-09T17:42:17.010 回答
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()可能是明智的。

于 2012-04-09T17:45:35.593 回答
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";

回显的结果字符串将具有自然字符并具有适当的空格格式。

于 2012-04-09T17:42:31.710 回答
0

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

于 2012-04-09T17:43:47.140 回答
0

你为什么不逃避引号?

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

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

哦,你也可以使用输出缓冲:-)

于 2012-04-09T17:57:06.633 回答