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