我一直试图在每个分割的任意数量的字符中分割一个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"> • </td> <td valign="top"> Element 1 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 2 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 3 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top">• </td> <td valign="top"> Element 4 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 5 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </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"> • </td> <td valign="top"> Element 7 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 8 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 9 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 10 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 11 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </td> <td valign="top"> Element 12 </td></tr>
<tr> <td width="20"> </td> <td width="15" valign="top"> • </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);
在这种情况下,两个标签被打破。我希望在分割结束时切断的任何标记只跳到下一个分割,但我不知道如何执行此操作。
你有没有考虑用像http://simplehtmldom.sourceforge.net/这样的东西解析DOM? – 2014-09-03 16:10:53
我喜欢这个主意,但是我处于这样一种情况,我无法真正使用这样的外部文件:( – Sefam 2014-09-03 16:15:13
)您可以用正则表达式将一组标记中的字符串分开,然后用这些部分构建您的字符串;你会到达你想要超越角色限制的地方,决定下一部分是标签还是可拆分的,然后从那里开始。 – abiessu 2014-09-03 16:16:36