tag questions question que ingles exercises estructura endings ejercicios ejemplos php string substring trim

php - ingles - tag questions estructura



¿Cómo seleccionar las primeras 10 palabras de una oración? (13)

Es totalmente lo que estamos buscando Simplemente cortar y pegar en su programa y ejecutar.

function shorten_string($string, $wordsreturned) /* Returns the first $wordsreturned out of $string. If string contains fewer words than $wordsreturned, the entire string is returned. */ { $retval = $string; // Just in case of a problem $array = explode(" ", $string); if (count($array)<=$wordsreturned) /* Already short enough, return the whole thing */ { $retval = $string; } else /* Need to chop of some words */ { array_splice($array, $wordsreturned); $retval = implode(" ", $array)." ..."; } return $retval; }

y simplemente llama a la función en tu bloque de código igual que

$data_itr = shorten_string($Itinerary,25);

¿Cómo, a partir de una salida, solo selecciono las primeras 10 palabras?


Esto podría ayudarte. Función para devolver 10 no. of words no. of words

function num_of_word($text,$numb) { $wordsArray = explode(" ", $text); $parts = array_chunk($wordsArray, $numb); $final = implode(" ", $parts[0]); if(isset($parts[1])) $final = $final." ..."; return $final; return; } echo num_of_word($text, 10);


Esto podría ayudarte. Función para devolver N no. de palabras

public function getNWordsFromString($text,$numberOfWords = 6) { if($text != null) { $textArray = explode(" ", $text); if(count($textArray) > $numberOfWords) { return implode(" ",array_slice($textArray, 0, $numberOfWords))."..."; } return $text; } return ""; } }


Esto se puede hacer fácilmente usando str_word_count()

$first10words = implode('' '', array_slice(str_word_count($sentence,1), 0, 10));


Lo hago de esta manera:

function trim_by_words($string, $word_count = 10) { $string = explode('' '', $string); if (empty($string) == false) { $string = array_chunk($string, $word_count); $string = $string[0]; } $string = implode('' '', $string); return $string; }

Es compatible con UTF8 ...


No entiendo por qué todo este lío cuando hay una función incorporada de Wordpress:

<?= wp_trim_words(get_the_content(), 15, ''...'') ?>

Eso echos las primeras 15 palabras de contenido (funciona dentro de un ciclo regular) y agrega puntos suspensivos.


Para seleccionar 10 palabras del texto dado puede implementar la siguiente función:

function first_words($text, $count=10) { $words = explode('' '', $text); $result = ''''; for ($i = 0; $i < $count && isset($words[$i]); $i++) { $result .= $words[$i]; } return $result; }


Prueba esto

$str = ''Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.''; $arr = explode(" ", str_replace(",", ", ", $str)); for ($index = 0; $index < 10; $index++) { echo $arr[$index]. " "; }

Sé que no es el momento de responder, pero deja que los recién llegados elijan sus propias respuestas.


Simplemente dividir en espacios funcionará incorrectamente si hay un carácter inesperado en lugar de un espacio en la estructura de la oración, o si la oración contiene múltiples espacios combinados.

La siguiente versión funcionará sin importar qué tipo de "espacio" utilice entre palabras y se puede extender fácilmente para manejar otros caracteres ... actualmente admite cualquier carácter de espacio en blanco más,. ; ? !

function get_snippet( $str, $wordCount = 10 ) { return implode( '''', array_slice( preg_split( ''/([/s,/.;/?/!]+)/'', $str, $wordCount*2+1, PREG_SPLIT_DELIM_CAPTURE ), 0, $wordCount*2-1 ) ); }

Las expresiones regulares son perfectas para este problema, porque puede hacer que el código sea tan flexible o estricto como desee. Sin embargo, debes tener cuidado. Específicamente, me acerqué a lo anterior apuntando a las brechas entre las palabras, en lugar de las palabras mismas, porque es bastante difícil establecer inequívocamente qué definirá una palabra.

Tome el límite de palabra /w , o su inverso /W Rara vez confío en esto, principalmente porque, dependiendo del software que esté usando (como ciertas versiones de PHP), no siempre incluyen caracteres UTF-8 o Unicode .

En expresiones regulares, es mejor ser específico, en todo momento. Para que sus expresiones puedan manejar cosas como las siguientes, sin importar dónde se representan:

echo get_snippet(''Это не те дроиды, которые вы ищете'', 5); /// outputs: Это не те дроиды, которые

Sin embargo, evitar la división podría valer la pena en términos de rendimiento. De modo que podría usar el enfoque actualizado de Kelly, pero cambie /w por [^/s,/.;/?/!]+ Y /W por [/s,/.;/?/!]+ . Aunque, personalmente, me gusta la simplicidad de la expresión de división utilizada anteriormente, es más fácil de leer y, por lo tanto, modificar. La pila de funciones de PHP sin embargo, es un poco feo :)


Sugiero usar str_word_count :

<?php $str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"; print_r(str_word_count($str, 1)); ?>

El ejemplo anterior dará como resultado:

Array ( [0] => Lorem [1] => ipsum [2] => dolor [3] => sit [4] => amet [5] => consectetur [6] => adipiscing [7] => elit )

El uso de un bucle para obtener las palabras que desea.

Fuente: http://php.net/str_word_count


http://snipplr.com/view/8480/a-php-function-to-return-the-first-n-words-from-a-string/

function shorten_string($string, $wordsreturned) { $retval = $string; // Just in case of a problem $array = explode(" ", $string); /* Already short enough, return the whole thing*/ if (count($array)<=$wordsreturned) { $retval = $string; } /* Need to chop of some words*/ else { array_splice($array, $wordsreturned); $retval = implode(" ", $array)." ..."; } return $retval; }


function get_first_num_of_words($string, $num_of_words) { $string = preg_replace(''//s+/'', '' '', trim($string)); $words = explode(" ", $string); // an array // if number of words you want to get is greater than number of words in the string if ($num_of_words > count($words)) { // then use number of words in the string $num_of_words = count($words); } $new_string = ""; for ($i = 0; $i < $num_of_words; $i++) { $new_string .= $words[$i] . " "; } return trim($new_string); }

Úselo así:

echo get_first_num_of_words("Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid, illo?", 5);

Salida: Lorem ipsum dolor sit amet

Esta función también funciona muy bien con caracteres unicode como los caracteres árabes.

echo get_first_num_of_words("نموذج لنص عربي الغرض منه توضيح كيف يمكن استخلاص أول عدد معين من الكلمات الموجودة فى نص معين.", 100);

Salida: نموذج لنص عربي الغرض منه توضيح كيف يمكن استخلاص أول عدد معين من الكلمات الموجودة فى نص معين.


implode('' '', array_slice(explode('' '', $sentence), 0, 10));

Para agregar soporte para otros saltos de palabras como comas y guiones, preg_match ofrece una manera rápida y no requiere dividir la cadena:

function get_words($sentence, $count = 10) { preg_match("/(?:/w+(?:/W+|$)){0,$count}/", $sentence, $matches); return $matches[0]; }

Como menciona Pebbl, PHP no maneja bien UTF-8 o Unicode, así que si eso es una preocupación, entonces puede reemplazar /w por [^/s,/.;/?/!] Y /W por [/s,/.;/?/!] .