我有以下问题:
到目前为止,我已经按照这个限制削减了部分,但这导致非常无效的HTML(第1部分有<div><h2>Title</h2><div>Some conten
,第2部分有t</div></div>
),这导致mPDF没有正确地将CSS样式应用于以下部分。
如果在写入之前关闭了完整的HTML元素,mPDF将正常工作,因此,以下两个部分(对于此示例)可能正常工作:
<div><h2>Title</h2>
和<div>Some content</div></div>
,即使外部div没有关闭。
什么是最好的方法来获得一个拆分方法,每个部分最多分割100'000个字符,但然后缩短它,使它只包含最后一个HTML结束标记?
你需要循环并使用带有偏移量的strrpos和strpos。
$len = strlen($str);
$pos2 = 0;
$previous = 0;
While($pos2 < $len){
$previous = $pos2;
$pos = strrpos($str, "</", $pos2+100000);
$pos2 = strpos($str, ">", $pos);
$parts[] = substr($str, $previous, $pos2);
}
未经测试,但应该做的技巧或可能需要一些轻微的纠正。
strrpos找到结束标记的开头,然后我使用该位置来查找标记的结尾。 使用substr从先前位置切换到新的结束标记并将其保存在parts数组中。 while循环应该在找到最后一个结束标记时结束。 可能发生的问题是在最后一个结束标记之后是否有文本或空格。我相信这将使循环永无止境。