在不剪切标记的情况下拆分HTML


Splitting HTML without cutting the tags

我一直在尝试将PHP字符串拆分为每次拆分任意数量的字符。然而,我正在寻找一种不破坏HTML标记的方法。这里有一个例子:

$string = 'Section 1: 
<table width = "528" border="0" cellpadding="0" cellspacing="0">
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 1 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 2 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 3 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top">&bull; </td>    <td valign="top"> Element 4 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 5 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 6 </td></tr>
</table>
Section 2:
<table width = "528" border="0" cellpadding="0" cellspacing="0">
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 7 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 8 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 9 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 10 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 11 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 12 </td></tr>
<tr>    <td width="20"> </td>   <td width="15" valign="top"> &bull; </td>   <td valign="top"> Element 13 </td></tr>
</table>';
$charAmount = 450;
$textSplit = array();
while ($string){
    array_push($textSplit, substr($string, 0, $charAmount));
    $string = substr($string, $charAmount);
}
var_dump($textSplit);

在这种情况下,有两个标签损坏。我希望在拆分结束时剪切的任何标签都能跳到下一个拆分,但我不知道如何做到这一点。

我不是php的家伙,但从逻辑上讲,我可以提供帮助,就在拆分之前,检查哪两个字符最靠近拆分索引<>

如果遇到<在错误的位置分裂,请跳过

如果遇到>,则继续进行拆分

我已经在jQuery中成功地完成了这项工作,有时会返回

关于拆分html字符串,我现在没有想法,但使用限制字符剪切字符串,您可以在链接中参考解决方案:https://github.com/dhngoc/php-cut-html-string.这个资源可以帮助你获得更多的想法。