2012-08-29 21 views

Respuesta

13

hacer esto, esto reemplaza nada después del personaje espacial Puede usarse también para guiones:

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

Dos problemas potenciales con esto: A medida que use 'strrpos() ', se busca el * last * whitespace y puede terminar con nombres como" Hello Nice "para cadenas como" Hello Nice World ". El segundo punto es que no devolverá nada cuando no haya espacios en blanco en el nombre. Si bien este comportamiento podría ser deseado, también podría causar molestia. – str

5

No es necesario utilizar expresiones regulares, simplemente utilice el método de explosión.

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

Creo que también podría llegar hasta $ item = explode ("", $ x) [0]; –

-1

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

Lo siento, a veces mezclar implosión y explotar ...

0

Se puede hacer también así

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

Prueba este

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

strtok

0

El método proporcionado por TheBlackBenzKid es válido para la pregunta - howev er cuando se le presenta un argumento que no contiene espacios, devolverá una cadena en blanco.

Aunque expresiones regulares serán más caros computacionalmente, que proporcionan mucha más flexibiltiy, por ejemplo:

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

Sólo para añadirlo a la mezcla, recientemente he aprendido esta técnica:

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

I sin embargo, hice un punto de referencia rápido, porque no he encontrado el método strtok anteriormente, y strtok es un 25% más rápido que mi solución de lista/explosión, en las cadenas de ejemplos dadas.

Además, cuanto más larga/más delimitada sea la cadena inicial, mayor será la brecha de rendimiento. Da un bloque de 5000 palabras, y explotar hará una matriz de 5000 elementos. strtok simplemente tomará el primer "elemento" y dejará el resto en la memoria como una cadena.

So strtok gana para mí.

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

Esta debería ser la respuesta aceptada. Gracias por verificar el rendimiento. – Marcel

0

Esta respuesta va a quitar todo después de que el primer espacio y no el pasado como en el caso de answer.Using aceptado strpos y substr

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