1

我正在使用这个

$lines = explode(PHP_EOL, trim($text));

将 $text 拆分为行数组,以便我可以这样显示:

foreach ($lines as $line) {
 echo $line;
}

但现在我想测试每条 $line 的长度,如果长度超过 50 个字符,我想将每行拆分为 50 个字符的倍数。

我怎样才能做到这一点并将所有行保留在 $lines 数组中?

我需要一种方法来测试每一行或使用explode( wordwrap($line), 50 ); 然后重新构建 $lines 数组,以便我可以再次循环所有行。

因为我不是编码员,所以如果必须将一行分成几块 50 个字符,我不知道如何在数组中插入新行。

希望你能理解我的问题。谢谢。

4

2 回答 2

2

这正是chunk_split为:

echo chunk_split( $line, 50 );

这会将您$line分成多行,每行 50 个字符。


在 OP 指定他想要将行拆分为数组中的单个元素后更新:

$temp = explode( PHP_EOL, trim($text) );
$lines = array();

foreach ($temp as $line) {
   $lines = array_merge( $lines, str_split($line, 50) );
}

在此处查看实际操作:http: //viper-7.com/eRgm6p

于 2012-07-31T14:27:15.883 回答
0

您可以使用str_split在您的 中进行拆分foreach,然后使用array_splice将新元素放入旧元素的位置。

在实践中,它看起来像这样:

$lines = explode(PHP_EOL, trim($text));
foreach ($lines as $i => $line) {
    if (strlen($line) > 50) {
        $split = str_split($line, 50);
        $lines = array_splice($lines, $i, 1, $split);
    }
}
reset($lines);
foreach ($lines as $line) {
    echo $line;
}
于 2012-07-31T14:32:43.283 回答