Php 使用HTML标记将字符串拆分为未知数量的列
目前,我收到一个包含所有类型html标记的内容字符串 我想知道一种方法,可以将它们分成几列,维护HTML标记,但不允许超过600个字符 我有以下资料:Php 使用HTML标记将字符串拆分为未知数量的列,php,html,string,split,Php,Html,String,Split,目前,我收到一个包含所有类型html标记的内容字符串 我想知道一种方法,可以将它们分成几列,维护HTML标记,但不允许超过600个字符 我有以下资料: $formatedContent = strip_tags($content, '<br><br/><strong><a><ul><li>'); $pages_array = explode(" ",$formatedContent); $pages_array_split
$formatedContent = strip_tags($content, '<br><br/><strong><a><ul><li>');
$pages_array = explode(" ",$formatedContent);
$pages_array_split = array();
$letter_count = 0;
$split_start = 0;
foreach($pages_array as $key => $page) {
if($letter_count+strlen($page)+1 > 600) {
$split_point = $letter_count+strlen($page)+1;
array_push($pages_array_split,substr($formatedContent,$split_start,$split_point));
$split_start += $letter_count+strlen($page)+1;
$letter_count = 0;
} else if($key == count($pages_array)-1) {
array_push($pages_array_split,substr($formatedContent,$split_start));
}
$letter_count += strlen($page)+1;
}
那么输出将是:
<div class="col"> //First column
<p>
<span>Lorem ipsum ipsum<br /></span><br />
<strong>
<span style="text-decoration: underline;"><br />Lorem ipsum ipsum<br /><br /></span>
</strong>
</p>
<p>Lorem ipsum ipsum</p>
<ul>
<li><span">Lorem ipsum ipsum</span></li>
<li><span">Lorem ipsum ipsum</span></li>
<li><span">Lorem ipsum ipsum</span></li>
</ul>
</div>
<!--Imagine 600 characters till here and it breaks now!-->
<div class="col"> //Second column
<ul>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum.</span></li>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum<br /> <br /><br /></span></li>
</ul>
<p><strong>Lorem ipsum ipsum</strong></p>
<p>Lorem ipsum ipsum<a href="http://www.lorem.org/">www.lorem.org</a><a title="www.lorem.org" href="http://www.lorem.org/">/</a> </p>
<p> </p>
</div>
//第一列
Lorem ipsum ipsum
Lorem ipsum ipsum
同侧视野
- 同侧视野
- 你能展示一下示例输入和输出以及你希望的输出吗?你能给我解释一下$split_point=$letter_count+strlen($page)+1?请分享一个example@stvcisco添加了示例输入&output@ArturPeniche检查字符长度是否大于600,如果大于600,我不会将最后一个字推到数组中。您需要跟踪嵌套状态。例如,如果在“代码< > UL> 中间有一个中断,您的代码必须知道它还没有关闭,在下一个代码> < LI> < /代码>之前添加一个闭包<代码>
<代码>,然后重新启动下一列中的列表。如果允许嵌套列表或其他复杂结构,这可能会变得很棘手。您可能还需要担心其他多行结构,如
、
和
。即使是
部分也可能被拆分,并且必须以某种有意义的方式进行处理。好像有很多工作要做。
<div class="col"> //First column
<p>
<span>Lorem ipsum ipsum<br /></span><br />
<strong>
<span style="text-decoration: underline;"><br />Lorem ipsum ipsum<br /><br /></span>
</strong>
</p>
<p>Lorem ipsum ipsum</p>
<ul>
<li><span">Lorem ipsum ipsum</span></li>
<li><span">Lorem ipsum ipsum</span></li>
<li><span">Lorem ipsum ipsum</span></li>
</ul>
</div>
<!--Imagine 600 characters till here and it breaks now!-->
<div class="col"> //Second column
<ul>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum.</span></li>
<li><span>Lorem ipsum ipsum</span></li>
<li><span>Lorem ipsum ipsum<br /> <br /><br /></span></li>
</ul>
<p><strong>Lorem ipsum ipsum</strong></p>
<p>Lorem ipsum ipsum<a href="http://www.lorem.org/">www.lorem.org</a><a title="www.lorem.org" href="http://www.lorem.org/">/</a> </p>
<p> </p>
</div>