2012-08-29 15 views

Odpowiedz

13

Czy to ta zastępuje niczego po znaku spacji. Może być również używany do kresek:

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

dwa potencjalne problemy z tym: Jak użyć 'strrpos() ', * ostatni * biały spacja jest wyszukiwany i możesz skończyć z nazwami takimi jak" Hello Nice "dla ciągów takich jak" Hello Nice World ". Drugą kwestią jest to, że nie zwróci niczego, jeśli w ogóle nie ma żadnych białych znaków. Chociaż takie zachowanie może być pożądane, może również powodować irytację. – str

5

Nie ma potrzeby używania wyrażenia regularnego, wystarczy użyć metody rozbicia.

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

Myślę, że możesz również posunąć się do $ item = explode ("", $ x) [0]; –

-1

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

Przepraszam, czasami mieszać implode i eksplodować ...

0

Można zrobić też jak ten

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

Spróbuj

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

strtok

0

Metoda podana przez TheBlackBenzKid jest ważna dla pytania - howev er po przedstawieniu argumentu, który nie zawiera spacji, zwróci pusty ciąg znaków.

Chociaż Wyrażenia regularne będzie bardziej kosztowne obliczeniowo, zapewniają one dużo więcej flexibiltiy, np:

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

Wystarczy dodać go do mieszanki, niedawno nauczył się tej techniki:

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

I właśnie zrobiłem szybki test porównawczy, ponieważ nie spotkałem się wcześniej z metodą strtok, a strtok jest o 25% szybszy niż moje rozwiązanie listy/eksplodować, na przykład podanych łańcuchów.

Ponadto im dłuższy/bardziej ograniczony początkowy ciąg, tym większa luka wydajności. Daj blok 5000 słów, a eksplodować stworzy 5000 elementów. strtok po prostu weźmie pierwszy "element" i pozostawi resztę w pamięci jako ciąg znaków.

Więc strtok wygrywa dla mnie.

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

To powinna być zaakceptowana odpowiedź. Dziękuję za sprawdzenie działania. – Marcel

0

Ta odpowiedź usunie wszystko po pierwszej przestrzeni i nie ostatni jak na razie przyjął answer.Using strpos i substr

$str = "CP hello jldjslf0"; 
$str = substr($str, 0, strpos($str, ' ')); 
echo $str; 
Powiązane problemy