Ho un database che ha nomi e voglio utilizzare PHP sostituire dopo lo spazio sui nomi, ad esempio i dati:Come rimuovo tutto dopo uno spazio in PHP?
$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
voglio per tornare
Laura
John.
John
Ho un database che ha nomi e voglio utilizzare PHP sostituire dopo lo spazio sui nomi, ad esempio i dati:Come rimuovo tutto dopo uno spazio in PHP?
$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
voglio per tornare
Laura
John.
John
fare questo, questo sostituisce nulla dopo il carattere dello spazio. Può essere utilizzato anche per i trattini:
$str=substr($str, 0, strrpos($str, ' '));
Non è necessario utilizzare regex, utilizzare semplicemente il metodo di esplosione.
$item = explode(" ", $x);
echo $item[0]; //Laura
Penso che potresti anche andare fino a $ item = explode ("", $ x) [0]; –
$ x = "Laura Smith"; $ temparray = implode ('', $ x); echo $ temparray [0];
Mi dispiace, a volte confondere implodere ed esplodere ...
È possibile farlo anche in questo modo
$str = preg_split ('/\s/',$x);
print $str[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);
}
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,' ');
Questa dovrebbe essere la risposta accettata. Grazie per aver controllato la performance. – Marcel
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;
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