我正在尝试这样做,以便用户可以在他们的帖子中添加一个表格,我遇到的问题,在另一个函数中我正在使用nl2br
来使其自动添加换行符。虽然表格如何工作,但所有换行符都会超出它,从而导致大量空间。我在下面提供了一张图片,供您查看我的意思。我尝试使用\r\n
或\n
,但我觉得我要么使用它错误,要么在这种情况下不起作用。
function markupDoc($post){
//tables
while(($post2 = preg_replace("/\[td]((?:(?!\[td\]).)+?)\[\/td\]/s", '<td>\\1</td>', $post)) !== $post){
$post=$post2;
}
while(($post2 = preg_replace("/\[tr]((?:(?!\[tr\]).)+?)\[\/tr\]/s", "<tr>\\1</tr>", $post)) !== $post){
$post=$post2;
}
while(($post2 = preg_replace("/\[thead]((?:(?!\[thead\]).)+?)\[\/thead\]/s", '<thead>\\1</thead>', $post)) !== $post){
$post=$post2;
}
while(($post2 = preg_replace("/\[table]((?:(?!\[table\]).)+?)\[\/table\]/s", '<table class="table table-striped table-bordered">\\1</table>', $post)) !== $post){
$post=$post2;
}
return $post;
}
字符串我正在提交:
going to
[table]
[thead]
[td]test[/td]
[td]test[/td]
[td]moo[/td]
[td]a[/td]
[/thead]
[tr]
[td]test[/td]
[td]moo[/td]
[/tr]
[tr]
[td]test[/td]
[td]test[/td]
[td]moo[/td]
[td]a[/td]
[/tr]
[/table]
答案 0 :(得分:0)
添加另一个功能,它将处理您帖子的不同部分。由于[table]
和[\table]
之间的部分明显不同于其他部分,因此您应该执行以下操作:
function parsePost($post)
{
$table_start = mb_strpos($post, '[table]');
$table_end = mb_strpos($post, '[/table]', $table_start);
$table_end += mb_strlen('[/table]');
$output = nl2br(mb_substr($post, 0, $table_start));
$output .= markupDoc(mb_substr($post, $table_start, $table_end - $table_start));
$output .= nl2br(mb_substr($post, $table_end));
return $output;
}