¿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];
?>
$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;
}