2016-04-30 9 views
0

Ich möchte alle Kommas von String löschen und dann alle Wörter mit Komma getrennt in Array.löschen String aus Kommas und setzen Sie es in Array

Für mich ist es einfach, es in dem Fall zu machen ich diese Art von Zeichenfolge habe:

word1,word2,word3,word4,word5,word6 

Ich habe just sie explodieren und sie in einem Array setzen wie folgt aus:

$words = "word1,word2,word3,word4,word5,word6"; 
$explode = explode(",", $words); 

$array = array(); 
foreach($explode as $word) { 
    $array[] = $word; 
} 

Und Hier kommt mein Bedürfnis: In dem Fall, dass ich diese Art von String habe, was ist der Anreiz?

word1,,word2,,,word3,word4,,,,,,,,,,,,word5,,,,word6... 

Die Anzahl der Kommata zwischen den Wörtern undefined und kann bis zu 100 Kommas sein.

Lassen Sie mich wissen, wenn Sie eine gute Annäherung an diese Art von String haben.

Antwort

2

Die Funktion array_filter in PHP wird zum "Filtern" eines Arrays verwendet, d. H. Zum Erstellen eines neuen Arrays aus den Elementen eines Arrays, die eine Bedingung erfüllen.

Wenn wir keinen Rückruf an array_filter übergeben, werden standardmäßig alle Werte für falsey und null gelöscht. Wir können eine Callback-Funktion als zweiten Parameter senden, der true für Elemente zurückgibt, die bleiben sollen, und false für Elemente, die entfernt werden sollen.

$words = "word1,word2,word3,word4,word5,word6"; 
$words_arr = array_filter(explode(",", $words)); 
print_r($words_arr); 

Wenn es Leerzeichen zwischen Kommas ist, dann gilt:

$words_arr = array_filter(explode(",", $words), function ($e) { 
    return strlen(trim($e)) > 0; // Only select those elements which have a length > 0 after trimming 
}); 

strlen ist für das Erhalten der String-Länge

trim für Leerzeichen Strippen von Anfang und Ende eines Strings ist

+0

Zuerst danke für die Lösung, und was ist, wenn es whitespa Ces zwischen Kommas? –

+0

@MacBen pls check edit – Ananth

+0

Super Antwort! Danke für Ihr Bemühen. –

2

verwenden Sie preg_split

$explode = preg_split("/,+/", $words); 
1

Erster Einsatz explode wie Sie die Werte alle haben zu erhalten:

>>> $values = explode(',', 'word1,word2,,,,word3'); 
>>> print_r($values); 
Array 
(
    [0] => word1 
    [1] => word2 
    [2] => 
    [3] => 
    [4] => 
    [5] => word3 
) 

Verwenden array_filter auf die Lösung leer Ergebnisse zu filtern:

>>> $non_empty_values = array_filter($values); 
>>> print_r($non_empty_values); 
Array 
(
    [0] => word1 
    [1] => word2 
    [5] => word3 
) 

schließlich die Array-Indizes zurücksetzen, verwenden array_values:

>>> $results = array_values($non_empty_values); 
>>> print_r($results) 
Array 
(
    [0] => word1 
    [1] => word2 
    [2] => word3 
) 
+0

Gute Antwort, danke auch. –

Verwandte Themen