2012-08-29 15 views

Antwort

13

Tun Sie dies, ersetzt diese alles nach dem Leerzeichen. Kann auch für Bindestriche verwendet werden:

+8

Zwei mögliche Probleme mit diesem entfernen: Wie Sie 'strrpos() verwenden, ', der * letzte * Whitespace wird gesucht und Sie könnten am Ende mit Namen wie" Hello Nice "für Strings wie" Hello Nice World "enden. Der zweite Punkt ist, dass es nichts zurückgeben wird, wenn in dem Namen überhaupt kein Leerzeichen enthalten ist. Obwohl dieses Verhalten möglicherweise erwünscht ist, kann es auch Ärger verursachen. – str

5

Es ist nicht notwendig, regex zu verwenden, verwenden Sie einfach die explode-Methode.

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

Ich denke du könntest auch so weit gehen wie $ item = explode ("", $ x) [0]; –

-1

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

Es tut mir leid, mischen manchmal implodieren und explodieren ...

0

Sie können auch tun mögen dieses

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

Versuchen Sie, diese

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

strtok

0

Die von TheBlackBenzKid zur Verfügung gestellte Methode gilt für die Frage - howev Wenn ein Argument ohne Leerzeichen angezeigt wird, wird eine leere Zeichenfolge zurückgegeben.

Obwohl Regexes wird rechnerisch teuer sein, sie viel mehr flexibiltiy bieten, zum Beispiel:

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

einfach in die Mischung hinzufügen, ich habe vor kurzem erfahren, diese Technik:

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

I Ich habe gerade einen schnellen Benchmark erstellt, weil ich die strtok-Methode noch nicht kennengelernt habe und strtok 25% schneller ist als meine list/explode-Lösung.

Je länger/mehr die Anfangszeichenfolge abgegrenzt wird, desto größer wird die Leistungslücke. Gebe einen Block von 5000 Wörtern, und explode macht ein Array von 5000 Elementen. strtok nimmt einfach das erste "Element" und lässt den Rest als String in Erinnerung.

So Strtok gewinnt für mich.

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

Dies sollte die akzeptierte Antwort sein. Danke für die Überprüfung der Leistung. – Marcel

0

Diese Antwort wird alles nach dem ersten Raum und nicht zuletzt als bei akzeptiert answer.Using strpos und substr

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