php string extract text-segmentation

¿Cómo obtener la primera palabra de una oración en PHP?



string extract (16)

Quiero extraer la primera palabra de una variable de una cadena. Por ejemplo, toma esta entrada:

<?php $myvalue = ''Test me more''; ?>

La salida resultante debe ser Test , que es la primera palabra de la entrada. ¿Cómo puedo hacer esto?


Aunque es un poco tarde, pero PHP tiene una mejor solución para esto:

$words=str_word_count($myvalue, 1); echo $words[0];


En caso de que no estés seguro de que la cadena comience con una palabra ...

$input = '' Test me more ''; echo preg_replace(''/(/s*)([^/s]*)(.*)/'', ''$2'', $input); //Test


Función que convertirá la cadena en dos partes, primera palabra y cadena restante.

Valor de retorno: tendrá la first y la clave remaining en $return array, respectivamente. first check strpos( $title," ") !== false es obligatorio en caso de que string tenga solo una palabra y no tenga espacio.

function getStringFirstWord( $title ){ $return = []; if( strpos( $title," ") !== false ) { $firstWord = strstr($title," ",true); $remainingTitle = substr(strstr($title," "), 1); if( !empty( $firstWord ) ) { $return[''first''] = $firstWord; } if( !empty( $remainingTitle ) ) { $return[''remaining''] = $remainingTitle; } } else { $return[''first''] = $title; } return $return; }


Hay una función de cadena ( strtok ) que se puede usar para dividir una cadena en cadenas más pequeñas ( tokens ) basadas en algún separador (s). A los efectos de este hilo, la primera palabra (definida como cualquier cosa antes del primer carácter de espacio) de Test me more se puede obtener al tokenizar la cadena en el carácter de espacio.

<?php $value = "Test me more"; echo strtok($value, " "); // Test ?>

Para obtener más detalles y ejemplos, consulte la strtok .


Personalmente, strsplit / explode / strtok no admite los límites de las palabras, por lo que para obtener una división más aguda use la expresión regular con el /w

preg_split(''/[/s]+/'',$string,1);

Esto dividiría palabras con límites hasta un límite de 1.


Podrías hacerlo

echo current(explode('' '',$myvalue));


Puede usar la función de explode siguiente manera:

$myvalue = ''Test me more''; $arr = explode('' '',trim($myvalue)); echo $arr[0]; // will print Test


Si tienes PHP 5.3

$myvalue = ''Test me more''; echo strstr($myvalue, '' '', true);

tenga en cuenta que si $myvalue es una cadena con una palabra strstr no devuelve nada en este caso. Una solución podría ser agregar un espacio a la cadena de prueba:

echo strstr( $myvalue . '' '', '' '', true );

Eso siempre devolverá la primera palabra de la cadena, incluso si la cadena tiene solo una palabra.

La alternativa es algo así como:

$i = strpos($myvalue, '' ''); echo $i !== false ? $myvalue : substr( $myvalue, 0, $i );

O usando Explosionar, que tiene tantas respuestas que lo utilizo, no me molestaré en señalar cómo hacerlo.


Similar a la respuesta aceptada con un paso menos:

$my_value = ''Test me more''; $first_word = explode('' '',trim($my_value))[0]; //$first_word == ''Test''


Usando la función de división también puede obtener la primera palabra de la cadena.

<?php $myvalue ="Test me more"; $result=split(" ",$myvalue); echo $result[0]; ?>


strtok es más rápido que las funciones extract o preg_* .


$input = "Test me more"; echo preg_replace("//s.*$/","",$input); // "Test"


$str=''<?php $myvalue = Test me more; ?>''; $s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE); print $s[1];


$string = '' Test me more ''; preg_match(''//b/w+/b/i'', $string, $result); // Test echo $result; /* You could use [a-zA-Z]+ instead of /w+ if wanted only alphabetical chars. */ $string = '' Test me more ''; preg_match(''//b[a-zA-Z]+/b/i'', $string, $result); // Test echo $result;

Saludos, Ciul


<?php $value = "Hello world"; $tokens = explode(" ", $value); echo $tokens[0]; ?>

Solo use explotar para obtener cada palabra de la entrada y salida del primer elemento de la matriz resultante.


public function getStringFirstAlphabet($string){ $data=''''; $string=explode('' '', $string); $i=0; foreach ($string as $key => $value) { $data.=$value[$i]; } return $data; }