2012-04-05 8 views
0

In PHP habe ich diese Zeichenfolge Variable:Shrink Raum in Zeichenfolge zu einzelnen Begrenzer

$var = " 00480722    ZF452D041502 13  9900  153370178"; 

Wenn ich explode tun, ich so etwas wie dieses:

$var = explode(" ",$var); 
echo count($var); 

// prints -> 36 

so explodieren dies macht eine Reihe von 36 Elemente, von denen die meisten "" sind. Wie kann ich alle diese mehrere Räume zwischen den Daten schrumpfen, damit ich explode tun können, und erhalten nur:

$var[0] -> 00480722 
$var[1] -> ZF452D041502 
... 
$var[4] -> 153370178 

Antwort

2

Sie ein regular expression split verwenden:

$var = preg_split('/\s+/', trim($var)); 

auf einer beliebigen Anzahl von aufeinanderfolgenden Dies wird aufgeteilt Leerzeichen. Die trim wird verwendet, um leere Übereinstimmungen am Anfang und/oder am Ende der Eingabezeichenfolge zu verhindern.

+0

Dank, dass die einfachste Antwort, die hier gegeben ist! –

0
$var = array_values(array_filter($var)); 
1

$var = " 00480722    ZF452D041502 13  9900  153370178"; 
$var = explode(" ",$var); 
$var = array_filter($var); 
echo count($var); 

Ausgabe

5 

Var Dump

var_dump($var); 

    array 
    1 => string '00480722' (length=8) 
    17 => string 'ZF452D041502' (length=12) 
    21 => string '13' (length=2) 
    27 => string '9900' (length=4) 
    35 => string '153370178' (length=9) 

Dank

0

Another alter Versuchen nativen, ersetzt mehrere Leerzeichen durch einen einzigen:

$var = preg_replace("/ {2,}/", " ", $var); //spaces only 
$var = preg_replace("/\s{2,}/", " ", $var); //all whitespaces e.g. line breaks, space etc. 
0
$var = explode(' ',preg_replace('/(+)/', ' ',$var)); 
Verwandte Themen