Cortar un texto para mandarlo por SMS sin cortar palabras

Vamos a preparar un script que nos trocea un texto en multiples SMS sin cortar palabras y añadiendo al final un contador de mensajes.

function ArrayTextosSMS($texto){
		$frases=array();
		$palabras=explode(" ",$texto);
		$frase="";
		$numpalabras=count($palabras);
		foreach($palabras as $palabra){
			$fraseadd=$frase." ".$palabra;
			if (strlen($fraseadd)>150){
				array_push($frases,trim($frase));
				$frase=$palabra;
			}else{
				$frase=$frase." ".$palabra;
			}
		}
		if ($frase!=""){
			array_push($frases,trim($frase));
		}
		$numfrases=count($frases);
		//añadimos un contador
		if ($numfrases>1){
			for($i=0;$i<$numfrases;$i++){
					$j=$i+1;
				$frases[$i]=$frases[$i]." ($j/$numfrases)";
			}
		}
		return $frases;
		
	}

el ejemplo es:

$texto="Este es un texto muy largo que queremos mandar mediante SMS, para ello hemos creado un script que nos lo trocea en partes de 150 caracteres y ademas le añade un contador de numero de mensajes. Ahora hay que encontrar un proveedor que nos permita mandar los sms, a ser posible de manera gratuita, pero todavia no he dado con ello. Si algun dia lo encuentro, lo compartiré en este mismo hilo";

print_r(ArrayTextosSMS($texto));die;

Que nos da como resultado:

Array
(
    [0] => Este es un texto muy largo que queremos mandar mediante SMS, para ello hemos creado un script que nos lo trocea en partes de 150 caracteres y ademas (1/3)
    [1] => le añade un contador de numero de mensajes. Ahora hay que encontrar un proveedor que nos permita mandar los sms, a ser posible de manera gratuita, (2/3)
    [2] => pero todavía no he dado con ello. Si algún día lo encuentro, lo compartiré en este mismo hilo (3/3)
)

El código esta disponible tambien en JAVA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

* Please enter the Biggest Number