2014-09-03 89 views
0

我一直试图在每个分割的任意数量的字符中分割一个PHP字符串。不过,我正在寻找一种方式来做到这一点,而不会破坏HTML标签。这里是一个例子:在不切割标签的情况下分割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); 

在这种情况下,两个标签被打破。我希望在分割结束时切断的任何标记只跳到下一个分割,但我不知道如何执行此操作。

+1

你有没有考虑用像http://simplehtmldom.sourceforge.net/这样的东西解析DOM? – 2014-09-03 16:10:53

+0

我喜欢这个主意,但是我处于这样一种情况,我无法真正使用这样的外部文件:( – Sefam 2014-09-03 16:15:13

+0

)您可以用正则表达式将一组标记中的字符串分开,然后用这些部分构建您的字符串;你会到达你想要超越角色限制的地方,决定下一部分是标签还是可拆分的,然后从那里开始。 – abiessu 2014-09-03 16:16:36

回答

1

我不是PHP的家伙,但logicwise我可以帮忙,只是拆分前检查其DESE两种字符的距离分离指标目前最近的向后<>

如果<遇到乌尔在错误的地方分裂所以跳过

如果>遇到与分裂

继续我在jQuery的做到了成功有时回

0

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