我正在使用codeigniter生成一个html表,以便插入到模板视图中。在How to insert linebreaks in generated html code的帮助和一些实验中,我能够将代码更改为:
$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both">\n <tbody>\n';
foreach ($array as $key => $value) {
$string=$string."\t\n<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>\n';
$string=$string.$element;
}
$string=$string.'</tbody>\n</table>';
然后我将这个生成的html字符串注入我的CI视图,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<base href="<?=base_url();?>">
<meta charset="utf-8">
<meta name="author" content="Vitaliy Potapov">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<link href="css/bootstrap.css" rel="stylesheet">
<link href="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.4.5/bootstrap-editable/css/bootstrap-editable.css" rel="stylesheet"/>
</head>
<body>
<?=$html_string;?>
<script src='js/jquery.js'></script>
<script src="js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.4.5/bootstrap-editable/js/bootstrap-editable.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#myDataTable').editable();
$.fn.editable.defaults.mode = 'inline';
});
</script>
</body>
</html>
我正在获得预期的表格,但是出于某种原因,当我查看生成的HTML时,我会在表格之前看到一堆生成的新行字符。
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:7)
我可能在与Orangepill同时给出了答案,然后编辑了我的回答以给予Orangepill信用。
Original answer:
可能是因为$string='';
你需要逃避"
内部(双引号),并使用:
$string="content with escaped double quotes etc";
在这种情况下,$string
和所有其他变量必须用双引号括起来,以便视为string。
根据Orangepill's的答案,使用连接也是必须的。
根据PHP手册,更多关于strings here。
您也可以访问concatenates here上的PHP.net网站。
答案 1 :(得分:5)
使用单引号时不会插入转义字符。要解决此问题,请从字符串中删除\ n或将代码更改为以下内容:
<?php
$string='<table id="myDataTable" class="table table-bordered table-striped" style="clear: both">'."\n".' <tbody>'."\n";
foreach ($array as $key => $value) {
$string=$string."\t\n<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>'."\n";
$string=$string.$element;
}
$string=$string."</tbody>\n</table>";