PHP:如何在字符限制和换行符附近用单词分隔字符串
我使用的是一个糟糕的PDFLib包装器,它无法处理PDFLib与超过字符限制(每个单元格大约1600个字符)的单元格之间的问题。 因此,我需要将一个大段落拆分成更小的字符串,整齐地放入单元格中,而不拆分单词,并且尽可能靠近行尾。 我完全不知道如何有效地做到这一点(我需要它在合理的时间内运行) 下面是我的代码,它仅根据字符长度将块分割成子字符串,忽略了我上面提到的单词和行要求: SPE_*函数是包装类中的静态函数, SetNextCellStyle调用用于围绕单元格的轮廓绘制一个框 开始一行文本需要BeginRow。 EndRow是结束文本行所必需的,它必须在BeginRow之后调用,如果预设的列数未完全填充,则会生成错误。 AddCell将字符串添加到第二个参数的列数中PHP:如何在字符限制和换行符附近用单词分隔字符串,php,string,pdflib,Php,String,Pdflib,我使用的是一个糟糕的PDFLib包装器,它无法处理PDFLib与超过字符限制(每个单元格大约1600个字符)的单元格之间的问题。 因此,我需要将一个大段落拆分成更小的字符串,整齐地放入单元格中,而不拆分单词,并且尽可能靠近行尾。 我完全不知道如何有效地做到这一点(我需要它在合理的时间内运行) 下面是我的代码,它仅根据字符长度将块分割成子字符串,忽略了我上面提到的单词和行要求: SPE_*函数是包装类中的静态函数, SetNextCellStyle调用用于围绕单元格的轮廓绘制一个框 开始一行文本需
function SPE_divideText($string,$cols,$indent,$showBorders=false)
{
$strLim = 1500;
$index = 0;
$maxIndex = round((strlen($string) / 1500-.5));
$retArr= array();
while(substr($string, $strLim -1500,$strLim)!=FALSE)
{
$retArr[$index] = substr($string, $strLim -1500,$strLim);
$strLim+=1500;
SPE_BeginRow();
SPE_SetNextCellStyle('cell-padding', '0');
if($indent>0)
{
SPE_Empty($indent);
}
if($showBorders)
{
SPE_SetNextCellStyle('border-left','1.5');
SPE_SetNextCellStyle('border-right','1.5');
if($index == 0)
{
SPE_SetNextCellStyle('border-top','1.5');
}
if($index== $maxIndex)
{
SPE_SetNextCellStyle('border-bottom','1.5');
}
}
SPE_AddCell($retArr[$index],$cols-$indent);
SPE_EndRow();
$index++;
}
}
提前感谢您的帮助 像这样的事情应该行得通
function substr_at_word_boundary($string, $chars = 100)
{
preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches);
$new_string = $matches[0];
return ($new_string === $string) ? $string : $new_string;
}
$string = substr_at_word_boundary($string, 1600)