簡體   English   中英

PHP - 每 N 個字符將字符串拆分為 Arrays

[英]PHP - Split String Into Arrays for every N characters

是否可以將一個很長的字符串逐句拆分為 5000 個字符(或更小)的數組項?

這是我到目前為止所擁有的:

<?php
$text = 'VERY LONG STRING';

foreach(explode('. ', $text) as $chunk) {
    $accepted[] = $chunk;
}
?>

這只是將字符串拆分為包含單個句子項的數組。 我需要將項目分組到子 arrays 中,每個項目都包含一個項目列表,這些項目加在一起時包含不超過 5000 個字符。

我試過這個:

<?php
$text = 'VERY LONG STRING';

foreach(explode('. ', $text) as $chunk) {
    $key = strlen(implode('. ', $accepted).'. '.$chunk) / 5000;
    $accepted[$key][] = $chunk;
}
?>

您可能可以看到我在這里嘗試做的事情,但沒有奏效。

更新:這成功了:

<?php
foreach(explode('. ', $text) as $chunk) {
  $chunkLen = strlen(implode('. ', $result).'. '.$chunk.'.');
  if ($len + $chunkLen > 5000) {
    $result[] = $partial;
    $partial = [];
    $len = 0;
  }
  $len += $chunkLen;
  $partial[] = $chunk;
}

if($partial) $result[] = $partial;
?>

感謝所有回復的人,您的支持意義重大。

如果我沒有誤解你的問題,那么你需要這樣的東西,

<?php
$text = 'VERY LONG STRING';
$s = chunk_split($text, 3, '|'); // put 5000 instead of 3
$s = substr($s, 0, -1);
$accepted = explode('|', $s);
print_r($accepted);
?>

或者

<?php
$text = 'VERY LONG STRING';
$accepted = str_split($text, 3);
print_r($accepted);
?>

演示: https://3v4l.org/H9DAl

演示: https://3v4l.org/PN7Aj

你可以這樣做:

$text = 'VERY LONG STRING';
$result = [];
$partial = [];
$len = 0;

foreach(explode(' ', $text) as $chunk) {
  $chunkLen = strlen($chunk);
  if ($len + $chunkLen > 5000) {
    $result[] = $partial;
    $partial = [];
    $len = 0;
  }
  $len += $chunkLen;
  $partial[] = $chunk;
}

if ($partial) {
    $result[] = $partial;
}

如果您使用較低的最大長度進行測試,您可以更輕松地測試它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM