2012-05-31 34 views
1

我有一个名为$ data的变量,其中包含一个巨大的字符串(27338个字符)。PHP:在多个字符块中切割字符串

该字符串将是pdf文件的内容。

我需要在pdf文件的每个页面末尾添加一个脚注。

我已计算每页2642个汉字。

我该如何削减2642个字符的$数据块,以便添加脚注?

我想:

$split = preg_split('/(.{0,2642})\s/', 
        $data, 
        0, 
        PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 

$count = count($split); 
foreach ($split as $key => $page) { 

    echo $page; echo "<br><br>"; 
} 

但每次$页面显示,远低于2642个字符。

非常感谢

+0

这种不匹配换行符,不是吗?所以你可以像下面这样设置dotall修饰符:'/(。{0,2642})\ s/s' – sofl

+1

“我需要在pdf文件的每一页末尾添加一个脚注。” - 数字会使你无处可逃,因为PDF包含标记。要在PDF中查找页面的结尾,您必须呈现文档。您需要使用PDF库进行正确编辑,这可能会让您添加页脚。 –

回答

2

我从未与数据量非常大的,但是一种方法中相同长度的要素分割的字符串用它是使用str_split功能(参见http://php.net/str_split

用法:

$array = str_split('some text', 2); 

,你将得到一个长度为2的元素(除了最后一个)

0

你可以从不同的字符串中使用的子功能,这将创建一个特定的子(定义的长度)。

substr($STRING, A, B); //where $string is the original string, 
         //A is the position where to start cutting 
         //B is how long the newly created string should be (it's optional!) 
$text = "ABCDEF"; 
echo substr($text, 2, 2); //will give you "CD" 
0

这个?

define("CHUNK_SIZE",2642); 
$string = "big.."; 
$chunks = array(); 
for($x=0,$sz=strlen($string);$x<$sz;$x+=CHUNK_SIZE) { 
    $chunks[] = substr($string,$x,$x+CHUNK_SIZE); 
} 
$chunks[0..n] += FOOTNOTE 

则:

implode("",$chunks); 
+0

如果你使用这个神奇的数字,你应该只在它的使用之上分配一次。这很可能是1.忘记了数字代表什么,2.很容易出错。 'CHARACTERS_PER_PAGE = 2642' – devsnd

+0

是的,定义('CHARACTERS_PER_PAGE',2642);会更合适,TX。 – 2012-05-31 11:38:33