如何在生成的html代码中插入换行符


How to insert linebreaks in generated html code

我正在使用codeigniter生成一个html表,以便插入到模板视图中。不幸的是,这是一个很长的字符串,在1行上,比如:

<table id="myDataTable" class="table table-bordered table-striped" style="clear: both"><tbody><tr><td>id</td><td><a href="#" id="id" data-type="text" data-pk="2" data-url="/post" data-title="id">2</a></td></tr><tr><td>email</td><td><a href="#" id="email" data-type="text" data-pk="2" data-url="/post" data-title="email">A@B.COM</a></td></tr><br><tr><td>notes</td><td><a href="#" id="notes" data-type="text" data-pk="2" data-url="/post" data-title="notes">notes go here</a></td></tr><br> ...

我希望它看起来更像:

<tr>         
    <td>field1</td>
    <td><a href="#" id="field1" data-type="select" data-pk="1" data-value="" data-original-title="Select field1"></a></td>
    <td><span class="muted">Select, loaded from js array. Custom display</span></td>
</tr>
<tr>         
    <td>field2</td>
    <td><a href="#" id="field2" data-type="select" data-pk="1" data-value="" data-original-title="Select field2"></a></td>
    <td><span class="muted">Select, loaded from js array. Custom display</span></td>
</tr>

这是我的代码:

$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both"><tbody>';
foreach ($array as $key => $value) {
    $string=$string."<tr><td>$key</td>";  
    $element='<td><a href="#" id="'.$key.'" data-type="text" data-pk="'.$rowID.'" data-url="/post" data-title="'.$key.'">'.$value.'</a>'.'</td></tr>'."<br>";
    $string=$string.$element;
}
$string=$string.'</tbody></table>';

我该怎么解决这个问题?

您可以将换行符('n)和制表符('t)添加到$string变量中。

例如:

$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both">'n't<tbody>'n';
foreach ($array as $key => $value) {
    $string = $string."<tr>'n't<td>$key</td>'n";  
    $element = ''t<td><a href="#" id="'.$key.'" data-type="text" data-pk="'
            .$rowID.'" data-url="/post" data-title="'.$key.'">'.$value.'</a>'
            .'</td>'n</tr>'."<br>";
    $string = $string.$element;
}
$string=$string.''n't</tbody>'n</table>';

您可以在循环中使用'n't字符。

例如:

$string=$string."<tr>'n't<td>$key</td>'n"; 
$element=''t<td><a href="#" id="'.$key.'" data-type="text" data-pk="'.$rowID.'" data-url="/post" data-title="'.$key.'">'.$value.'</a>'.'</td>'n</tr>'."<br>";

此外,在</tr>之后不应该有换行符。

您必须为选项卡添加带''n和''t的换行符

$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both">'n't<tbody>'n';
        foreach ($array as $key => $value) {
        $string=$string."'t't<tr><td>$key</td>'n";  
        $element=''t't<td><a href="#" id="'.$key.'" data-type="text" data-pk="'.$rowID.'" data-url="/post" data-title="'.$key.'">'.$value.'</a>'.'</td></tr>'n';
        $string=$string.$element;
        }

          $string=$string.''t</tbody>'n</table>';

此外,br标记不允许直接在表中,所以我删除了它。它无论如何都没有任何作用,因为行自动出现在新的行

您可以将带有'n't的换行符添加到$string变量中:

$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both">'n't<tbody>'n';
        foreach ($array as $key => $value) {
        $string=$string."'t't<tr><td>$key</td>'n";  
        $element=''t't<td><a href="#" id="'.$key.'" data-type="text" data-pk="'.$rowID.'" data-url="/post" data-title="'.$key.'">'.$value.'</a>'.'</td></tr>'n'."<br>";
        $string=$string.$element;
        }

我建议在回声中尝试''n和空格,例如:

$string=$string."<tr>'n    <td>$key</td>";

我相信结果会是:

<tr>
    <td>field1</td>

编辑:Michael使用''t和''n的回答要好得多。