PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

convert_cyr_string> <chr
Last updated: Sun, 25 Nov 2007

view this page in

chunk_split

(PHP 4, PHP 5)

chunk_split — Χωρίστε ένα string σε μικρότερα μέρη

Περιγραφή

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

Μπορεί να χρησιμοποιηθεί για να χωρίσει ένα string σε μικρότερα μέρη, το οποίο, παραδείγματος χάρη, μπορεί να είναι χρήσιμο για τη μετατροπή του base64_encode ώστε να ταιριάζει στα RFC 2045 semantics. Τοποθετεί την παράμετρο end (η οποία είναι εκ των προτέρων είναι "\r\n") ανά chunklen πλήθος χαρακτήρων (η οποία είναι εκ των προτέρων είναι 76). Τέλος, επιστρέφει ένα νέο string αφήνοντας το αρχικό χωρίς αλλαγές.

Example#1 Παράδειγμα χρήσης της chunk_split()

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

Ανατρέξτε επίσης στις: explode(), split(), wordwrap() και στη διεύθυνση » RFC 2045.



convert_cyr_string> <chr
Last updated: Sun, 25 Nov 2007
 
add a note add a note User Contributed Notes
chunk_split
tim at weird spots in my crotch dot com
08-May-2008 02:29
@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;
}
?>
neos at blizzz dot ru
03-May-2008 11:38
"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
Royce
16-Apr-2008 12:31
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;
}
?>
lehongviet at gmail dot com
29-Jun-2007 03:23
This function works well to cut long para for preview without cutting word. Good for Unicode such as &#7789;

function split_hjms_chars($xstr, $xlenint, $xlaststr)
{
    $xlenint = strpos($xstr," ",$xlenint);
   return substr($xstr,0,$xlenint).$xlaststr;
}
mark [at] d0gz [dot] net
10-Apr-2007 10:12
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.
06-Mar-2007 02:45
in response to "hansvane at yahoo dot com dot ar"

you can do that ALOT easier:

<?php
function split_hjms_chars($xstr, $xlenint, $xlaststr)
{
   return
substr($xstr,0,$xlenint).$xlaststr;
}
?>
hansvane at yahoo dot com dot ar
21-Jan-2007 10:06
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
chris AT w3style.co DOT uk
14-Aug-2006 12:32
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.
xamine at gmail dot com
04-Jun-2006 11:06
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.

?>
kevin @t hyguard,com
03-Oct-2005 07:08
Not quite completely obvious, but...

you can un_chunk_split() by:

$long_str = str_replace( "\r\n", "", $chunked_str );
harish at thespitbox dot net
30-Jul-2005 05:45
another way to group thousands in a number, which is much simpler, is built into PHP :)

www.php.net/number_format
adrian at zhp dot inet dot pl
08-Jul-2005 02:28
If you need to output number formated with thousand's separator, just use it:

$number = strrev(chunk_split (strrev($number), 3,' '));

If $number is '1234567', result is '1 234 567'.
Kevin
25-Jun-2005 04:10
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($word, 12, " ") . " ";
    }
    return
$outstring;
}
?>
Chris
15-Jun-2005 02:18
@phpkid:

You can avoid such long complex code and just use some CSS stuff.

Just add style="table-layout:fixed" in your <td > tag and your problem will be solved.

ciao
phpkid
28-May-2005 10:47
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;
}
mv@NOSPAM
24-Jan-2004 07:39
the best way to solve the problem with the last string added by chunk_split() is:

<?php
$string
= '1234';
substr(chunk_split($string, 2, ':'), 0, -1);
// will return 12:34
?>
Danilo
10-Dec-2003 02:51
>> 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
sbarnum at pointsystems dot com
20-Apr-2001 07:46
[Editor's note: You can always use wordwrap('FF99FF', 2, ':', 2); to avoid this]

chunk_split will also add the break _after_ the last occurence.  So, attempting to split a color into base components,
chunk_split('FF99FF', 2, ':');
will return FF:99:FF:

convert_cyr_string> <chr
Last updated: Sun, 25 Nov 2007
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites