为什么我在桌面单元格中生成的PHP会产生如此奇怪的HTML

时间:2012-03-02 15:09:14

标签: php html forms html-table

我需要一些帮助!

为什么以下代码:

function buildDeleteForm($deleteUrl,$searchArray) {
print ("<form target=\"_self\" method=\"post\">\n");
print ("<input type=\"hidden\" name=\"delUrl\" value=\"" . $deleteUrl . "\" />\n");
print ("<input type=\"hidden\" name=\"url\" value=\"" . $searchArray . "\" />\n");
print ("<input type=\"submit\" name=\"delete\" value=\"delete\" />\n</form>\n");
}


foreach ($urls as $url) {
    $url = preg_replace('/\s+/', '', $url);
    print("<tr><td>" . $url . "</td>");
    $response = sendRestRequest($url,$type);
    $status = $response['http_code'];
    if ($status == 200) {
        // build the form
        print("<td class=\"result\"><img src=\"200.png\"></td><td class=\"right\">" . buildDeleteForm($url,$urllist) . "</td></tr>");
    } elseif ($status == 404) {
        print("<td class=\"result\"><img src=\"404.png\"></td><td class=\"right\">&nbsp</td></tr>");
    } else {
        print("<td class=\"result\"><img src=\"error.png\"></td><td class=\"right\">" . $status . "</td></tr>");
    }
}

制作这个疯狂的HTML:

<tr>
    <td>
        http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790
    </td>
    <form target="_self" method="post">
        <input type="hidden" name="delUrl" value="http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790" />
        <input type="hidden" name="url" value="http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790,http://someserver4018.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790,http://someserver4020.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790" />
        <input type="submit" name="delete" value="delete" />
    </form>
    <td class="result">
        <img src="200.png">
    </td>
    <td class="right">
    </td>
</tr>

它完全取决于表格单元格...我可以理解它是否只是一个css的东西,但这是实际生成的源代码完全奇怪。我知道这是一件简单的事情,我看不到并且看起来很愚蠢 - 但是嘿,我只是想让事情发挥作用:)

3 个答案:

答案 0 :(得分:2)

因为您正在评估函数buildDeleteForm(),其中输出字符串给用户而不是简单地返回它将连接到表达式中。使用单个print语句将buildDeleteForm()中的多个调用替换为return

答案 1 :(得分:2)

您正在进行打印而不是返回,这意味着它在连接表格单元格组件之前打印表单并且没有任何内容可以连接,因为该函数不返回任何内容。这样做是这样的:

function buildDeleteForm($deleteUrl,$searchArray) {
    $html = '';
    $html .= '<form target="_self" method="post">'."\n";
    $html .= '<input type="hidden" name="delUrl" value="' . $deleteUrl . '" />'."\n";
    $html .= '<input type="hidden" name="url" value="' . $searchArray . '" />'."\n";
    $html .= '<input type="submit" name="delete" value="delete" />'."\n";
    $html .= '</form>'."\n";
    return $html;
}

我还更改了字符串以删除所有反斜杠,使其更具可读性。

答案 2 :(得分:1)

您的buildDeleteForm函数正在生成输出而不是返回要连接的字符串。

function buildDeleteForm($deleteUrl, $searchArray)
{
    return '
        <form target="_self" method="post">
        <input type="hidden" name="delUrl" value="' . $deleteUrl . '" />
        <input type="hidden" name="url" value="' . $searchArray . '" />
        <input type="submit" name="delete" value="delete" />
        </form>';
}