2012-08-29 11 views

risposta

13

fare questo, questo sostituisce nulla dopo il carattere dello spazio. Può essere utilizzato anche per i trattini:

$str=substr($str, 0, strrpos($str, ' ')); 
+8

Due potenziali problemi con questo: Come si utilizza 'strrpos() ', viene cercato lo * spazio * ultimo * e potresti trovare nomi come" Hello Nice "per stringhe come" Hello Nice World ". Il secondo punto è che non restituirà nulla quando non ci sono spazi bianchi nel nome. Anche se questo comportamento potrebbe essere voluto, potrebbe anche causare fastidio. – str

5

Non è necessario utilizzare regex, utilizzare semplicemente il metodo di esplosione.

$item = explode(" ", $x); 
echo $item[0]; //Laura 
+1

Penso che potresti anche andare fino a $ item = explode ("", $ x) [0]; –

-1

$ x = "Laura Smith"; $ temparray = implode ('', $ x); echo $ temparray [0];

Mi dispiace, a volte confondere implodere ed esplodere ...

0

È possibile farlo anche in questo modo

$str = preg_split ('/\s/',$x); 
print $str[0]; 
7

Prova questo

<?php 
$x = "Laura Smith"; 
echo strtok($x, " "); // Laura 
?> 

strtok

0

Il metodo fornito da TheBlackBenzKid è valido per la domanda: howev er quando viene presentato con un argomento che non contiene spazi, restituirà una stringa vuota.

Anche se regex sarà più computazionalmente costosi, offrono molto di più flexibiltiy, ad esempio:

function get_first_word($str) 
{ 
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str); 
} 
15

solo per aggiungere che nel mix, di recente ho appreso questa tecnica:

list($s) = explode(' ',$s); 

I ho fatto solo un rapido benchmark, perché non ho incontrato prima il metodo strtok, e strtok è il 25% più veloce della mia lista/esplodi soluzione, sulle stringhe di esempio fornite.

Inoltre, il più lungo/più delimitato della stringa iniziale, maggiore diventa il divario di prestazioni. Dare un blocco di 5000 parole, ed esplodere farà una serie di 5000 elementi. strtok prenderà solo il primo "elemento" e lascerà il resto in memoria come una stringa.

Così strtok vince per me.

$s = strtok($s,' '); 
+0

Questa dovrebbe essere la risposta accettata. Grazie per aver controllato la performance. – Marcel

0

Questa risposta rimuoverà tutto dopo il primo spazio e non l'ultimo, come in caso di accettato answer.Using strpos e substr

$str = "CP hello jldjslf0"; 
$str = substr($str, 0, strpos($str, ' ')); 
echo $str; 
Problemi correlati