Last active
November 27, 2015 17:18
-
-
Save kuroisuna/d0f345c2502c09d6bac3 to your computer and use it in GitHub Desktop.
Separa una oración en pedazos basado en un límite de letras, si existe un punto separa también
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('split_words')) { | |
/** | |
* Separa una oración en pedazos basado en un límite de letras, | |
* si existe un punto separa también | |
* | |
* Uso: | |
* $text = "Según The Hitchhiker's Guide to the Galaxy, un grupo de exploradores de una raza de seres pandimensionales e hiperinteligentes construyen Pensamiento Profundo, la segunda mejor computadora de todos los tiempos, para obtener la respuesta al sentido de la vida, el universo y todo lo demás. Después de siete millones y medio de años meditando la pregunta, Pensamiento Profundo declara que la respuesta es cuarenta y dos, razonando que la pregunta fue mal planteada y debe ser formulada correctamente para entender la respuesta."; | |
* split_words($text, 100); | |
* // Según The Hitchhiker's Guide to the Galaxy, un grupo de exploradores de una raza de seres pandimensionales e hiperinteligentes \n | |
* // construyen Pensamiento Profundo, la segunda mejor computadora de todos los tiempos, para obtener la respuesta al sentido \n | |
* // de la vida, el universo y todo lo demás. \n | |
* // Después de siete millones y medio de años meditando la pregunta, Pensamiento Profundo declara que la respuesta es cuarenta \n | |
* // y dos, razonando que la pregunta fue mal planteada y debe ser formulada correctamente para entender la respuesta. | |
* | |
* @param string $text | |
* @param int $limit | |
* @return string | |
*/ | |
function split_words($text, $limit) | |
{ | |
// Almacenamos el conteo de cada letra | |
$count = 0; | |
// El string que almacena cada oración cortada | |
$sentence = ''; | |
$words = []; | |
$all_the_words = explode(' ', $text); | |
foreach ($all_the_words as $word) { | |
// Vamos incrementando el conteo de cada pedazo | |
$count += strlen($word); | |
// Vamos concatenando cada palabra a un pedazo | |
$sentence .= "{$word} "; | |
// Si llegamos al límite o si hay un punto, creamos otro | |
// elemento del array, otro pedazo | |
if ($count >= $limit || strpos($word, '.') !== false) { | |
$words[] = $sentence; | |
// Reset | |
$count = 0; | |
$sentence = ''; | |
} | |
} | |
// Si queda algunas palabras rezagadas, la agregamos al final | |
$words[] = $sentence; | |
// Devolvemos el string trimeado y separado por retornos de carro | |
return trim(implode("\n", $words)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment