2013-07-31 91 views
2

我正在使用codeigniter生成一個用於插入模板視圖的html表。不幸的是,這是走出來是一個非常長的字符串1個一行:如何在生成的html代碼中插入換行符

<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">[email protected]</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>'; 

如何我能解決這個問題嗎?

+0

爲什麼使用PHP生成HTML? CodeIgniter允許你分開你的視圖,控制器和模型,這可以幫助你將PHP在視圖中的使用降到最低。你可以試試'​​<?php echo $ yourValue; ?>'。通過這種方式,您的視圖中的大部分HTML可以正常縮進,並且您不必與'\ n \ t'混淆。你在做什麼並不是錯的,但對我來說,它似乎違背了CodeIgniter(我個人覺得這樣生成HTML相當難看)。 –

+0

它有什麼不同?使用瀏覽器控制檯如果你想檢查輸出,將全部組織成樹 – charlietfl

回答

2

您可以在您的$string變量中添加換行符(\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."<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>'; 
1

你可以在你的循環使用\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>後換行。

0

您必須添加換行符製表符

$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,所以我刪除它。它沒有任何目的,反正因爲行會自動出現在新線

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

我建議用\ n和空間試驗中相呼應,例如:

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

我相信結果將是:

<tr> 
    <td>field1</td> 

編輯:使用\ t和\ n的邁克爾的迴應更好。