chunk_split

(PHP 4, PHP 5)

chunk_splitSplit a string into smaller chunks

Description

string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )

Can be used to split a string into smaller chunks which is useful for e.g. converting base64_encode() output to match RFC 2045 semantics. It inserts end every chunklen characters.

Parameters

body

The string to be chunked.

chunklen

The chunk length.

end

The line ending sequence.

Return Values

Returns the chunked string.

Examples

Example #1 chunk_split() example

<?php
// format $data using RFC 2045 semantics
$new_string chunk_split(base64_encode($data));
?>

See Also

Коментарии

Автор:
>> 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
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

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