2

我正在使用 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>';

我怎样才能解决这个问题?

4

5 回答 5

2

您可以在变量中添加换行符 ( \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>';
于 2013-07-31T14:52:36.007 回答
1

你可以使用\nand\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>.

于 2013-07-31T14:52:40.927 回答
0

您必须使用 \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 标签,所以我将其删除。无论如何,它没有任何用途,因为行会自动出现在新行上

于 2013-07-31T14:53:22.203 回答
0

您可以将换行符添加\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;
        }
于 2013-07-31T14:54:38.367 回答
0

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

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

我相信结果会是:

<tr>
    <td>field1</td>

编辑:迈克尔使用 \t 和 \n 的反应要好得多。

于 2013-07-31T14:55:54.287 回答