поэтому у меня есть строка, которая составляет около 3800 символов, это фраза слов и т. д.
Теперь я запускаю строку через что-то, хотя предел равен 1000, поэтому как я могу разбить строку на 4 части, каждая из которых содержит не более 1000 символов, а не сломать слова пополам, есть ли способ сделать это?
благодаря
вы можете использовать str_split
.
$string = "the_long_string"; $array = str_split($string, 1000); //$array will contain elements which each is 1000 chars long.
если вы хотите, чтобы слова не wordwrap
преобразуйте их через wordwrap
до их резки следующим образом
$string = "the_long_string"; $string = wordwrap($string, 1000, "||"); //assume your string doesn't contain `||` $parts = explode("||", $string);
Вы можете использовать str_split
$parts = str_split($string, 1000);
Не уверен, что не сломал слова пополам, хотя
Вы можете использовать substr
для этого
$first = substr($string, 0, 1000); $second = substr($string, 1001, 2000); $third = substr($string, 2001, 3000); $fourth = substr($string, 3001, 3800);
Я бы использовал strpos со смещением.
Что-то вроде
$fullstring = "3800 characters"; $pos = $last = 0; while($pos !== FALSE && $last <= 1000) { $last = $pos; $pos = strpos($fullstring, " ", $pos) + 1; }
Это будет продолжаться до тех пор, пока $ last не будет последней позицией пробела перед 1000-м символом, или больше символов. Затем вам просто нужно подстроить эту позицию и назначить массив, подставить остальные символы и перезаписать $ fullstring и сбросить счетчики до 0 (т. Е. Добавить цикл вокруг кода while (strlen($fullstring) > 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
Надеюсь это поможет!