0

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

现在我正在运行字符串,虽然限制是 1000,所以我怎么能把字符串分成 4 块,每块最多包含 1000 个字符,而不是把单词分成两半,有什么办法吗?

谢谢

4

5 回答 5

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);
于 2013-07-06T05:39:40.207 回答
1

您可以使用str_split

$parts = str_split($string, 1000);

不确定是否不把单词分成两半

于 2013-07-06T05:38:09.810 回答
1

你可以用substr这个

$first = substr($string, 0, 1000);
$second = substr($string, 1001, 2000);
$third = substr($string, 2001, 3000);
$fourth = substr($string, 3001, 3800);
于 2013-07-06T05:40:31.920 回答
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

希望这可以帮助!

于 2013-07-06T05:41:17.183 回答
0

我会使用带有偏移量的strpos 。

就像是

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

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

于 2013-07-06T05:46:22.793 回答