chunk_split

(PHP 4, PHP 5)

chunk_split — Разбивает строку на фрагменты

Описание

string chunk_split ( string $body [, int $chunklen [, string $end ]] )

Функция используется для разбиения строки на фрагменты, например, для приведения результата функции base64_encode() в соответствие с требованиями » RFC 2045. Она вставляет строку end (по умолчанию "\r\n") после каждых chunklen символов (по умолчанию 76). Возвращает преобразованную строку без изменения исходной.

Пример #1 Пример использования chunk_split()

<?php
// форматирование данных в соответствии с RFC 2045
$new_string chunk_split(base64_encode($data));
?>

См. также описание функций str_split(), explode(), split(), wordwrap(), и » RFC 2045.

Коментарии

Автор:
>> chunk_split will also add the break _after_ the last occurence.

this should be not the problem 

substr(chunk_split('FF99FF', 2, ':'),0,8);
will return FF:99:FF
2003-12-10 16:51:51
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Автор:
the best way to solve the problem with the last string added by chunk_split() is:

<?php
$string 
'1234';
substr(chunk_split($string2':'), 0, -1);
// will return 12:34
?>
2004-01-24 09:39:25
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Автор:
Well I have been having issues with a shoutbox I am coding it would keep expanding the <TD> if there were large words in it but I fixed it with this:

function PadString($String){
    $Exploded = explode(" ", $String);
    $Max_Parts = count($Exploded);
   
    $CurArray = 0;
    $OutString = '';
    while($CurArray<=$Max_Parts)
    {
        $Peice_Size = strlen($Exploded[$CurArray]);
        if($Peice_Size>15)
        {
            $OutString .= chunk_split($Exploded[$CurArray], 12, " ");
            $CurArray++;
        } else {
            $OutString .= " ".$Exploded[$CurArray];
            $CurArray++;
        }
    }
   
    return $OutString;
}
2005-05-28 13:47:06
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Автор:
To phpkid:

This is a much simpler solution.

<?php
function longWordWrap($string) {
   
$string str_replace("\n""\n "$string); // add a space after newline characters, so that 2 words only seperated by \n are not considered as 1 word
   
$words explode(" "$string); // now split by space
   
foreach ($words as $word) {
       
$outstring .= chunk_split($word12" ") . " ";
    }
    return 
$outstring;
}
?>
2005-06-25 19:10:34
http://php5.kiev.ua/manual/ru/function.chunk-split.html
another way to group thousands in a number, which is much simpler, is built into PHP :)

www.php.net/number_format
2005-07-30 08:45:56
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Not quite completely obvious, but... 

you can un_chunk_split() by:

$long_str = str_replace( "\r\n", "", $chunked_str );
2005-10-03 22:08:17
http://php5.kiev.ua/manual/ru/function.chunk-split.html
In reply to "adrian at zhp dot inet dot pl" digit grouping function:
<?php
    $number 
strrev(chunk_split (strrev($number), 3,' '));
   
//If $number is '1234567', result is '1 234 567'.
?>

There is a much more simple way of doing this, by using the built-in number_format() function. 

<?php 
   $number 
number_format($number,2,"."," ");

   
//This will round $number to 2 decimals, use the dot (".")
   //as decimal point, and the space (" ") as thousand sepparator.

?>
2006-06-04 14:06:00
http://php5.kiev.ua/manual/ru/function.chunk-split.html
I'm not sure what versions this also occurs in but the output of chunk_split() in PHP 5.0.4 does not match the output in other versions of PHP.

In all versions of PHP I have used, apart from 5.0.4 chunk_split() adds the separator (\r\n) to the end of the string.  But in PHP 5.0.4 this does not happen.  This had a fairly serious impact on a library I maintain so it may also affect others who are not aware of this.
2006-08-14 15:32:05
http://php5.kiev.ua/manual/ru/function.chunk-split.html
This function is very simple and many other functions make this on PHP 5 and even some ones in 4 the good think about this one is that work on php 3.0.6 and 4 

function split_hjms_chars($xstr, $xlenint, $xlaststr)
{
    $texttoshow = chunk_split($xstr,$xlenint,"\r\n"); 
    $texttoshow  = split("\r\n",$texttoshow);
    $texttoshow = $texttoshow[0].$xlaststr;
    return $texttoshow;
}

// For use 

echo split_hjms_chars("This is your text",6,"...");

// Will return

This i...

It is useful to cut long text on preview lists and if the server it's old.

Hope it helps some one. Hans Svane
2007-01-22 00:06:24
http://php5.kiev.ua/manual/ru/function.chunk-split.html
When using ssmtp for simple command line mailing:

$mail_to = "destination@emailbox.com";
$msg = "this would be an actual base64_encoded gzip msg";
$date = date(r);
$mail  = "X-FROM: root@sender.org \n";
$mail .= "X-TO: ".$mail_to. " \n";
$mail .= "To: ".$mail_to. " \n";
$mail .= "Date: $date \n";
$mail .= "From: root@sender.org \n";
$mail .= "Subject: lifecheck \n";
$mail .= $msg." \n";
exec("echo '$mail' | /usr/sbin/ssmtp ".$mail_to);

be sure to invoke chunk_split() on your message body - ssmtp becomes unhappy with long lines and will subsequently trash  your message.
2007-04-11 01:12:28
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Автор:
Here's a version of Chunk Split I wrote that will not split html entities. Useful if you need to inject something in html (in my case, <wbr/> tags to allow for long text wrapping).

<?php
function HtmlEntitySafeSplit($html,$size,$delim)
{
 
$pos=0;
  for(
$i=0;$i<strlen($html);$i++)
  {
    if(
$pos >= $size && !$unsafe)
    {
     
$out.=$delim;
     
$unsafe=0;
     
$pos=0;
    }
   
$c=substr($html,$i,1);
    if(
$c == "&")
     
$unsafe=1;
    elseif(
$c == ";")
     
$unsafe=0;
   
$out.=$c;
   
$pos++;
  }
  return 
$out;
}
?>
2008-04-16 03:31:19
http://php5.kiev.ua/manual/ru/function.chunk-split.html
"version" of chunk_split for cyrillic characters in UTF-8

public function UTFChunk($Text,$Len = 10,$End = "\r\n")
{
    if(mb_detect_encoding($Text) == "UTF-8")
    {
        return mb_convert_encoding(
                chunk_split(
                    mb_convert_encoding($Text, "KOI8-R","UTF-8"), $Len,$End
                ),
                "UTF-8", "KOI8-R"
            );
    } else
    {
        return chunk_split($Text,$Len,$End);
    }
}

this is example for russian language
2008-05-03 14:38:46
http://php5.kiev.ua/manual/ru/function.chunk-split.html
@Royce

I think this is better, since you can still use the ampersand in your text:

<?php
function HtmlEntitySafeSplit($html,$size,$delim)
{
 
$pos=0;
  for(
$i=0;$i<strlen($html);$i++)
  {
    if(
$pos >= $size && !$unsafe)
    {
     
$out.=$delim;
     
$unsafe=0;
     
$pos=0;
    }
   
$c=substr($html,$i,1);
    if(
$c == "&")
     
$unsafe=1;
    elseif(
$c == ";")
     
$unsafe=0;
    elseif(
$c == " ")
     
$unsafe=0;
   
$out.=$c;
   
$pos++;
  }
  return 
$out;
}
?>
2008-05-08 05:29:38
http://php5.kiev.ua/manual/ru/function.chunk-split.html
I've found this quite useful for simulating various kinds of shuffles with cards.  It is humorous but can imitate multiple deck cuts and other (imperfectly) random events.

<?php
function truffle_shuffle($body$chunklen 76$end "\r\n")
{
     
$chunk chunk_split($body$chunklen"-=blender=-");
     
$truffle explode("-=blender=-",$chunk);
     
$shuffle shuffle($truffle);
     
$huknc implode($end,$shuffle);
     return 
$huknc;
}
?>
2009-11-20 11:10:11
http://php5.kiev.ua/manual/ru/function.chunk-split.html
chunk_split() is not multibyte safe. If you ever run into needing the function that is multibyte safe, here you go:

<?php

function mbStringToArray ($str) {
    if (empty(
$str)) return false;
   
$len mb_strlen($str);
   
$array = array();
    for (
$i 0$i $len$i++) {
       
$array[] = mb_substr($str$i1);
    }
    return 
$array;
}

function 
mb_chunk_split($str$len$glue) {
    if (empty(
$str)) return false;
   
$array mbStringToArray ($str);
   
$n 0;
   
$new '';
    foreach (
$array as $char) {
        if (
$n $len$new .= $char;
        elseif (
$n == $len) {
           
$new .= $glue $char;
           
$n 0;
        }
       
$n++;
    }
    return 
$new;
}

?>
2010-04-05 07:30:57
http://php5.kiev.ua/manual/ru/function.chunk-split.html
If you are using UTF-8 charset you will face a problem with Arabic language
to solve this problem i used this function

<?php
function chunk_split_($text,$length,$string_end)
{
   
$text iconv("UTF-8","windows-1256",$text);
   
$text str_split($text);
    foreach(
$text as $val)
    {
        if(
$a !== $val)
        {
           
$a $val;
           
$x 0;
        }else{
           
$a $val;
           
$x++;
        }
        if(
$x $length)
        {
           
$new_text .= $val.$string_end;
           
$x 0;
        }else
        {
             
$new_text .= $val;
        }
       
    }
   
$new_text iconv("windows-1256","UTF-8",$new_text);
    return 
$new_text;
}
?>
2010-08-10 11:02:45
http://php5.kiev.ua/manual/ru/function.chunk-split.html
An alternative for unicode strings;

<?php
function chunk_split_unicode($str$l 76$e "\r\n") {
   
$tmp array_chunk(
       
preg_split("//u"$str, -1PREG_SPLIT_NO_EMPTY), $l);
   
$str "";
    foreach (
$tmp as $t) {
       
$str .= join(""$t) . $e;
    }
    return 
$str;
}

$str "Yarım kilo çay, yarım kilo şeker";
echo 
chunk_split($str4) ."\n";
echo 
chunk_split_unicode($str4);
?>

Yar�
�m k
ilo 
çay
, ya
rım
 kil
o ş
eker

Yarı
m ki
lo ç
ay, 
yarı
m ki
lo ş
eker
2012-02-28 17:35:26
http://php5.kiev.ua/manual/ru/function.chunk-split.html
Автор:
Important note is the maximum line length and the recommended one. The standard says:
"Lines in a message MUST be a maximum of 998 characters excluding the CRLF, but it is RECOMMENDED that lines be limited to 78 characters excluding the CRLF. "

See PHP manual for chunk_split() Which is set to 76 characters long chunk and "\r\n" at the end of line by default.
2014-02-19 15:57:12
http://php5.kiev.ua/manual/ru/function.chunk-split.html
As an alternative for  qeremy [atta] gmail [dotta] com
There is much shorter way for binarysafe chunking of multibyte string:

<?php
function word_chunk($str$len 76$end "\n") {
   
$pattern '~.{1,' $len '}~u'// like "~.{1,76}~u"
   
$str preg_replace($pattern'$0' $end$str);
    return 
rtrim($str$end);
}

$str 'русский';
echo 
chunk_split($str3) ."\n";
echo 
word_chunk($str3) . "\n";
?>

р�
�с
с�
�и
й

рус
ски
й
2016-02-23 08:22:57
http://php5.kiev.ua/manual/ru/function.chunk-split.html
The description of the function is slightly inaccurate. A trailing $end is also added.
2017-04-24 22:48:57
http://php5.kiev.ua/manual/ru/function.chunk-split.html

    Поддержать сайт на родительском проекте КГБ