将长串打成碎片php

时间:2013-07-06 05:35:03

标签: php string split

所以我有一个大约3800个字符的字符串,它的句子等等。

现在我正在通过某些东西运行字符串,虽然限制是1000,所以我怎么能把字符串分成4个部分,每个部分最多包含1000个字符,而不是将单词分成两半,有没有办法做到这一点?

由于

5 个答案:

答案 0 :(得分:5)

您可以使用str_split

   $string = "the_long_string";
   $array = str_split($string, 1000); //$array will contain elements which each is 1000 chars long.

如果你想要不切断的话,请在切割之前将其转换为wordwrap,如下所示

 $string = "the_long_string";
 $string = wordwrap($string, 1000, "||"); //assume your string doesn't contain `||`
 $parts = explode("||", $string);

答案 1 :(得分:1)

您可以使用str_split

$parts = str_split($string, 1000);

不确定不会破坏一半的单词

答案 2 :(得分:1)

您可以将substr用于此

$first = substr($string, 0, 1000);
$second = substr($string, 1001, 2000);
$third = substr($string, 2001, 3000);
$fourth = substr($string, 3001, 3800);

答案 3 :(得分:0)

您可以使用str_split()分割字符串:

这就是我要做的事情:

<?php
$str = "sdasdasdsdkjsdkdjbskdbvksdbfksjdssssbfkdbfksdjbf";
$length = strlen($str);
$parts = str_split($str, $length/4);
foreach ($parts as $part) {
    echo $part."<br>";
}    
?>

将给定的字符串分成4个相等的部分并输出:

sdasdasdsdkj
sdkdjbskdbvk
sdbfksjdssss
bfkdbfksdjbf

希望这有帮助!

答案 4 :(得分:0)

我将strpos与偏移量一起使用。

这样的东西
$fullstring = "3800 characters";
$pos = $last = 0;
while($pos !== FALSE && $last <= 1000) {
    $last = $pos;
    $pos = strpos($fullstring, " ", $pos) + 1;
}

这将继续循环,直到$ last是第1000个字符之前的空格的最后位置,或者没有更多字符。然后,您只需要子行到该位置并分配给一个数组,对其余字符进行substr并覆盖$ fullstring,并将计数器重置为0(即在while (strlen($fullstring) > 0)的代码周围添加一个循环