2012-11-07 17 views
6

Ho stringa del tipo:Ottenere prime due parole da stringa in php

$message="AB 1234 Hello, how are you? 

voglio ottenere in questo modo:

$message[0] = AB 
$message[1] = 1234 
$message[2] = Hello, how are you? 

Si prega di non suggerire funzione substr perché la lunghezza delle prime due parole può variare ma avranno spazi intermedi. Qualche altro suggerimento?

+3

explode() sullo spazio –

+2

Si prega di controllare il problema e le esigenze di nuovo – fawad

+0

vedo alcun problema con il mio suggerimento. è identico alle 4 risposte di proposito sotto –

risposta

26

Usa explode() con un limite, ad esempio

$message = explode(' ', $message, 3); 

Se avete bisogno di maggiore flessibilità intorno alla parola delimitatore, si può fare qualcosa di simile con preg_split()

$message = preg_split('/[\s,]+/', $message, 3) 

Demo - http://codepad.org/1gLJEFIa

+0

Demo - http://codepad.org/kZc2jGW9 – Phil

+1

holy s * Non ho mai realizzato che esistesse un parametro limite per "esplodere". +100 – Ben

3

Se parole sono semplicemente i primi due pezzi delimitati da spazi bianchi sequenziale, si potrebbe fare ...

$words = preg_split("/\s+/", $str); 

Se si desidera che i primi due, si potrebbe usare preg_split() s' argomento limite (grazie Phil).

+0

['preg_split()'] (http://php.net/manual/en/function.preg-split.php) ha un limite di argomenti anche tu lo sai;) – Phil

+0

@Phil Sto diventando pigro ... :) – alex

4

voi può usare la seguente funzione.

// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 

output: 
//piece1 
//piece2 

Maggiori informazioni: http://php.net/manual/en/function.explode.php

2

Partenza sscanf, assicuratevi di leggere i commenti inseriti dall'utente anche se troppo. È possibile trovare una descrizione migliore dei formati consentiti su http://www.cplusplus.com/reference/clibrary/cstdio/scanf/.

<?php 
$string = 'AB 1234 Hello, how are you?'; 
$array = sscanf($string, '%s %d %[^$]'); 
var_dump($array); 
/* 
    array(3) { 
     [0]=> 
     string(2) "AB" 
     [1]=> 
     int(1234) 
     [2]=> 
     string(19) "Hello, how are you?" 
    } 
*/ 
Problemi correlati