PHP: Split string into array, like explode with no delimiter

PhpStringArraysSplitExplode

Php Problem Overview


I have a string such as:

> "0123456789"

And I need to split each character into an array.

I, for the hell of it, tried:

explode('', '123545789');

But it gave me the obvious: Warning: No delimiter defined in explode) ..

How would I come across this? I can't see any method off hand, especially just a function.

Php Solutions


Solution 1 - Php

$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");

str_split takes an optional 2nd param, the chunk length (default 1), so you can do things like:

$array = str_split("aabbccdd", 2);

// $array[0] = aa
// $array[1] = bb
// $array[2] = cc  etc ...

You can also get at parts of your string by treating it as an array:

$string = "hello";
echo $string[1];

// outputs "e"

Solution 2 - Php

You can access characters in a string just like an array:

$s = 'abcd';
echo $s[0];

> prints 'a'

Solution 3 - Php

Try this:

$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

Solution 4 - Php

str_split can do the trick. Note that strings in PHP can be accessed just like a character array. In most cases, you won't need to split your string into a "new" array.

Solution 5 - Php

Here is an example that works with multibyte (UTF-8) strings.

$str = 'äbcd';

// PHP 5.4.8 allows null as the third argument of mb_strpos() function
do {
    $arr[] = mb_substr( $str, 0, 1, 'utf-8' );
} while ( $str = mb_substr( $str, 1, mb_strlen( $str ), 'utf-8' ) );

It can be also done with preg_split() (preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )), but unlike the above example, that runs almost as fast regardless of the size of the string, preg_split() is fast with small strings, but a lot slower with large ones.

Solution 6 - Php

Try this:

$str = "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

The above example will output:

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
)

Solution 7 - Php

Try this:

    $str = '546788';
    $char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

Solution 8 - Php

If you want to split the string, it's best to use:

$array = str_split($string);

When you have a delimiter, which separates the string, you can try,

explode('', $string);

Where you can pass the delimiter in the first variable inside the explode such as:

explode(',', $string);

Solution 9 - Php

$array = str_split("$string");

will actually work pretty fine, but if you want to preserve the special characters in that string, and you want to do some manipulation with them, then I would use

do {
    $array[] = mb_substr($string, 0, 1, 'utf-8');
} while ($string = mb_substr($string, 1, mb_strlen($string), 'utf-8'));

because for some of mine personal uses, it has been shown to be more reliable when there is an issue with special characters.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiononi-kunView Question on Stackoverflow
Solution 1 - PhpErikView Answer on Stackoverflow
Solution 2 - PhpnategoodView Answer on Stackoverflow
Solution 3 - PhpConanView Answer on Stackoverflow
Solution 4 - PhpSoufiane HassouView Answer on Stackoverflow
Solution 5 - PhpDanijelView Answer on Stackoverflow
Solution 6 - PhpReza RoshanView Answer on Stackoverflow
Solution 7 - PhpRekhaView Answer on Stackoverflow
Solution 8 - Phpuser3470929View Answer on Stackoverflow
Solution 9 - PhpNedzad GanicView Answer on Stackoverflow