PHP: str_split - Manual

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

search for in the

str_word_count str_shuffle

Last updated: Sat, 27 Jan 2007

view this page in

# str_split

(PHP 5)

str_split -- Преобразует строку в массив

## Описание

array str_split ( string string [, int split_length] )

Преобразует строку в массив. Если указан необязательный аргумент `split_length`, возвращаемый массив будет содержать части исходной строки длиной `split_length` каждая, иначе каждый элемент будет содержать один символ.

Если `split_length` меньше 1, возвращается `FALSE`. Если `split_length` больше длины строки `string`, вся строка будет возвращена в первом и единственном элементе массива.

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

`<?php
$str = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
?>`

Вывод:

    Array
    (
        [0] => H
        [1] => e
        [2] => l
        [3] => l
        [4] => o
        [5] =>
        [6] => F
        [7] => r
        [8] => i
        [9] => e
        [10] => n
        [11] => d
    )

    Array
    (
        [0] => Hel
        [1] => lo
        [2] => Fri
        [3] => end
    )

См. также описание функций chunk_split(), preg_split(), split(), count_chars() и str_word_count(), а также for.

add a note User Contributed Notes
str_split
26-Feb-2007 08:32
`Problem with the post below me is, that the string can not contain the splitter "-1-".
Btw, here's my version.
<?php
function strsplit($str, $l=1) {
do {$ret[]=substr($str,0,$l); $str=substr($str,$l); }
while($str != "");
return $ret;
}
?>`
webmaster at nsssa dot ca
28-Oct-2006 07:45
`I noticed in the post below me that his function would return an array with an empty key at the end.
So here is just a little fix for it.
<?php
//Create a string split function for pre PHP5 versions
function str_split($str, $nr) {
//Return an array with 1 less item then the one we have
return array_slice(split("-l-", chunk_split($str, $nr, '-l-')), 0, -1);
}
?>`
05-Oct-2006 05:14
`//fast & short version od str_split PHP3, 4x
function string_split($str, $nr){
return split("-l-", chunk_split($str, $nr, '-l-'));
}
//example :
print_r(string_split('123412341234', 4));`
ference at super_delete_brose dot co dot uk
31-Aug-2006 12:22
`If you are looking for a way to split multibyte strings then this may come in handy:
<?php
$text = "süpérbrôsé";
function mb_str_split($str, $length = 1) {
if ($length < 1) return FALSE;
$result = array();
for ($i = 0; $i < mb_strlen($str); $i += $length) {
$result[] = mb_substr($str, $i, $length);
}
return $result;
}
$solo = mb_str_split($text);
$quintet = mb_str_split($text, 5);
print_r($solo);
print_r($quintet);
?>
Spits out:
Array
(
[0] => s
[1] => ü
[2] => p
[3] => é
[4] => r
[5] => b
[6] => r
[7] => ô
[8] => s
[9] => é
)
Array
(
[0] => süpér
[1] => brôsé
)`
fstorm2 at gmail dot com
29-Aug-2006 02:08
`If you use PHP 4 and don't need the split_length parameter, here's the shortest replacement:
<?php
preg_split('#(?<=.)(?=.)#s', $str);
?>`
http://www.matt-fletcher.co.uk/
21-Aug-2006 04:44
`A simple way to split credit card numbers into chunks of four numbers:
<?php
echo implode(' ',str_split($card_number,4));
?>`
malmsteenforce at tlen dot pl
19-Jul-2006 10:52
`<?
//fast & short version od str_split
function string_split($str)
{
$str_array=array();
$len=strlen($str);
for($i=0;$i<$len;$i++) $str_array[]=$str{$i};
return $str_array;
}
//example :
var_dump (string_split("split this"));
?>`
user at mockme dot com
25-Mar-2006 05:53
`found this great example on a php board for those not using php5, as an alternative to the posts below this
<?php
if(!function_exists('str_split')){
function str_split($string,$split_length=1){
$count = strlen($string);
if($split_length < 1){
return false;
} elseif($split_length > $count){
return array($string);
} else {
$num = (int)ceil($count/$split_length);
$ret = array();
for($i=0;$i<$num;$i++){
$ret[] = substr($string,$i*$split_length,$split_length);
}
return $ret;
}
}
}
?>`
simple
15-Mar-2006 07:54
`if (!function_exists("str_split")) {
function str_split($string, $length = 1) {
if ($length <= 0) {
trigger_error(__FUNCTION__."(): The the length of each segment must be greater then zero:", E_USER_WARNING);
return false;
}
$splitted = array();
while (strlen($string) > 0) {
$splitted[] = substr($string, 0, $length);
$string = substr($string, $length);
}
return $splitted;
}
}`
14-Mar-2006 05:49
`Note to function by carlosreche at yahoo dot com.
The while:
<?php
...
while ($str_length--) {
$splitted[$i] = $string[$i++];
}
...
?>
.. result in index starting at 1.
Ie: str_split("ABC") gives
Array
(
[1] => A
[2] => B
[3] => C
)
While php5's str_split("ABC") gives
Array
(
[0] => A
[1] => B
[2] => C
)
And his str_split("ABC",2) gives index starting at 0.
Change to this (or something similar):
<?php
...
while ($str_length--) {
$splitted[$i] = $string[$i];
$i++;
}
...
?>
.... or use heavyraptor's function. A bit more sclick,..`
heavyraptor
10-Mar-2006 02:07
`I think that the last post by carlosreche at yahoo dot com is too complicated.
It's much easier if you do it like this:
<?php
if (!function_exists("str_split")) {
function str_split($str,$length = 1) {
if ($length < 1) return false;
$strlen = strlen($str);
$ret = array();
for ($i = 0; $i < $strlen; $i += $length) {
$ret[] = substr($str,$i,$length);
}
return $ret;
}
}
?>
I hope it helps for those with PHP <5`
carlosreche at yahoo dot com
15-Feb-2006 04:23
`For those who work with PHP < 5:
<?php
if (!function_exists("str_split")) {
function str_split($string, $length = 1) {
if ($length <= 0) {
trigger_error(__FUNCTION__."(): The the length of each segment must be greater then zero:", E_USER_WARNING);
return false;
}
$splitted = array();
$str_length = strlen($string);
$i = 0;
if ($length == 1) {
while ($str_length--) {
$splitted[$i] = $string[$i++];
}
} else {
$j = $i;
while ($str_length > 0) {
$splitted[$j++] = substr($string, $i, $length);
$str_length -= $length;
$i += $length;
}
}
return $splitted;
}
}
?>`
Hage Yaapa
04-Feb-2006 06:27
`The very handy str_split() was introduced in PHP 5, but a lot of us are still forced to use PHP 4 at our host servers. And I am sure a lot of beginners have looked or are looking for a function to accomplish what str_split() does.
Taking advantge of the fact that strings are 'arrays' I wrote this tiny but useful e-mail cloaker in PHP, which guarantees functionality even if JavaScript is disabled in the client's browser. Watch how I make up for the lack of str_split() in PHP 4.3.10.
<?php
// cloackEmail() accepts a string, the email address to be cloaked
function cloakEmail($email) {
// We create a new array called $arChars, which will contain the individula characters making up the email address. The array is blank for now.
$arChars = array();
// We extract each character from the email 'exploiting' the fact that strings behave like an array: watch the '$email[$i]' bit, and beging to fill up the blank array $arChars
for ($i = 0; $i < strlen($email); $i++) { $arChars[] = $email[$i]; }
// Now we work on the $arChars array: extract each character in the array and print out it's ASCII value prefixed with '&#' to convert it into an HTML entity
foreach ($arChars as $char) { print '&#'.ord($char); }
// The result is an email address in HTML entities which, I hope most email address harvesters can't read.
}
print cloakEmail('someone@nokikon.com');
?>
###### THE CODE ABOVE WITHOUT COMMENTS ######
<?php
function cloakEmail($email) {
$arChars = array();
for ($i = 0; $i < strlen($email); $i++) { $arChars[] = $email[$i]; }
foreach ($arChars as $char) { print '&#'.ord($char); }
}
print cloakEmail('someone@nokikon.com');
?>
In creating this little utility, I demonstrated how the lack of str_split() can be made up in PHP < 5. If you got how it was accomplished, you could write a function to do exactly what str_split() does in PHP 5 and even name it 'str_split()'. :)`
organek at hektor dot umcs dot lublin dot pl
21-May-2005 04:57
`[Editor's Note: Or just: php.net/wordwrap]
This is a little function to split a string into shorter strings with max lenght $n in such way, that it don't split words (it search for spaces), it's usefull for articles or sth.
Result is put in $ttab variable, and function result is number of "pages".
<?php
function divide_text($text, $n, &$ttab) {
$ttab = array();
$l = strlen($text); // text length
$cb = 0; //copy begin from..
$p = 0; // parts
if ($l <= $n) {
$ttab[0] = $text;
return 1;
} else {
$ctrl = 1;
while(((($p-1) * $n) < $l) && ($ctrl < 100)) {
$crtl++; // control variable, to protect from infinite loops
$tmp = substr($text, $cb, $n);
// we're looking for last space in substring
$lastpos = strrpos($tmp," ");
if ( (is_bool($lastbool) && !$lastpos) || ( $l - $cb <= $n)) {
$ttab[$p] = $tmp;
} else {
$tmpgood = trim(substr($tmp, 0,$lastpos)); // if they were another spaces at the end..
$ttab[$p] = $tmpgood;
$cb += $lastpos + 1 ;
}; // if
$p++;
}; //for
return $p;
}; // if
} // divide text
?>`
aidan at php dot net
20-May-2004 09:53
`This functionality is now implemented in the PEAR package PHP_Compat.
More information about using this function without upgrading your version of PHP can be found on the below link:
http://pear.php.net/package/PHP_Compat`
add a note
str_word_count str_shuffle

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST