webentwicklung-frage-antwort-db.com.de

PHP: String in Array aufteilen, wie explodieren ohne Trennzeichen

Ich habe eine Zeichenfolge wie:

"0123456789"

und müssen jedes Zeichen in ein Array aufteilen.

Ich habe es verdammt noch mal versucht:

explode('', '123545789');

Aber es gab mir das offensichtliche: Warnung: Kein Trennzeichen in explodieren definiert) ..

Wie würde ich darauf stoßen? Ich kann keine Methode von der Hand sehen, insbesondere nur eine Funktion

69
oni-kun
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");

str_split nimmt einen optionalen 2. Parameter, die Chunk-Länge (Standard 1), sodass Sie Folgendes tun können:

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

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

Sie können auch auf Teile Ihrer Zeichenfolge zugreifen, indem Sie sie als Array behandeln:

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

// outputs "e"
127
Erik

Was versuchst du zu erreichen? Sie können auf Zeichen in einer Zeichenfolge wie auf ein Array zugreifen:

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

druckt ' a '

19
nategood

Versuche dies:

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

str_split kann den Trick ausführen. Beachten Sie, dass auf Zeichenfolgen in PHP wie auf ein Zeichenarray zugegriffen werden kann. In den meisten Fällen müssen Sie Ihre Zeichenfolge nicht in ein "neues" Array aufteilen.

5
Soufiane Hassou

Hier ein Beispiel, das mit Multibyte-Zeichenfolgen (UTF-8) funktioniert.

$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' ) );

Es kann auch mit preg_split() (preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )) ausgeführt werden, aber im Gegensatz zum obigen Beispiel, das unabhängig von der Größe der Zeichenfolge fast genauso schnell abläuft, ist preg_split() mit kleinen Zeichenfolgen schnell, mit großen jedoch viel langsamer.

4
Danijel

Versuche dies:

$str = "Hello Friend";

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

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

Das obige Beispiel gibt Folgendes aus:

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
)
2
Reza Roshan

Versuche dies:

    $str = '546788';
    $char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
2
Rekha
$array = str_split("$string");

funktioniert eigentlich ganz gut, ABER wenn Sie die Sonderzeichen in dieser Zeichenfolge beibehalten möchten und mit ihnen einige Manipulationen vornehmen möchten, dann würde ich sie verwenden

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

denn für einige meiner persönlichen Zwecke hat sich gezeigt, dass es zuverlässiger ist, wenn ein Problem mit Sonderzeichen auftritt

0
Nedzad Ganic

Wenn Sie die Zeichenfolge teilen möchten, verwenden Sie am besten Folgendes:

$array = str_split($string);

Wenn Sie ein Trennzeichen haben, das die Zeichenfolge trennt, können Sie Folgendes versuchen:

explode('' ,$string);

Wo können Sie das Trennzeichen in der ersten Variablen innerhalb der Explosion übergeben, z.

explode(',',$string);
0
user3470929