Php 使用HTML标记将字符串拆分为未知数量的列

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

目前,我收到一个包含所有类型html标记的内容字符串

我想知道一种方法,可以将它们分成几列,维护HTML标记,但不允许超过600个字符

我有以下资料:

$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 />&nbsp;<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>&nbsp;</p>
    <p>&nbsp;</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 />&nbsp;<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>&nbsp;</p>
    <p>&nbsp;</p>
</div>