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


Why does my PHP generated form inside table cell produce such strange HTML

我需要一些帮助!

为什么以下代码:

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的东西,我可以理解,但这是真正生成的源代码,完全是wierd。我知道这是一件简单的事情,我就是看不见,看起来很愚蠢——但嘿,我只想让它发挥作用:)

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

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

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;
}

我还更改了字符串,去掉了所有的反斜杠,使其可读性更强。

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>';
}