Cadena de texto en varias columnas

2 comentarios

Hace poco, he tenido que utilizar esta función para poder dividir en 2 columnas una determinada cadena de texto. Con la siguiente función php podemos también pasarle como parámetro el número de columnas que queremos.

Para representar las columnas utilizaremos css y una lista ul que será la que generemos de la cadena original.

$cadena ='Sin León no hubiera España, que antes que Castilla leyes, Concilios, fueros y reyes, dieron prestigio a León. La fama cantó su hazaña con clarines de victoria: ¡León escribió la historia de Covadonga a Colón! Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español ¡Viva León! Tierra hidalga, tierra mía: estrofas del romancero, desde Guzmán a don Suero, va tremolando el honor. Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español. De piedra una plegaria la catedral semeja, sobria y gentil refleja el alma de León. De historia milenaria, de santidad osario, del arte relicario y de la fe expresión. Tierra hidalga, tierra mía: estrofas del romancero, desde Guzmán a don Suero, va tremolando el honor. Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español. Gloria a ti, pueblo sin par; a mi labio el corazón se asoma para gritar: ¡Viva León! ¡Viva León!';

function cadena_columnas ($cadena, $columnas) {
  $salida =  '<ul class="columnas">';
  $cuerpotexto = array("$cadena"); // generamos una matriz de la cadena
  $texto = implode(",", $cuerpotexto); // obtenemos cadena que contiene una representación de todos los elementos de la matriz en el mismo orden
  $longitud = strlen($texto); // determinamos la longitud de la cadena
  $longitud = ceil($longitud/$columnas); // redondeamos la longitud hacia arriba devolviendo el entero más cercano dividiendola entre el nº de columnas
  $palabras = explode(" ", $texto); // buscamos las palabras sueltas separadas por espacios
  $c = count($palabras); // contamos el número de palabras
  $l = 0;
  for($i=1;$i<=$columnas;$i++) {
    $nuevacadena = "";
    $salida .= '<li>';
  for($g=$l;$g<=$c;$g++) {
    if(strlen($nuevacadena) <= $longitud || $i == $columnas)
    $nuevacadena.=$palabras[$g]." ";
    else {
      $l = $g;
    break;
      }
     }
    $salida .= $nuevacadena;
    $salida .= '</li>';
  }
  $salida .= '</ul>';
  return $salida;
}
// Modo de empleo: (por ejemplo para dividir el texto en 3 li o columnas)
echo cadena_columnas($cadena,3);

Por último ya solo falta darle un estilo en nuestro archivo css de estilos:

.columnas{
    list-style:none;
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    color:333;
}
.columnas li{
    float:left;
    width:25%;
    margin:0 0  20px 20px;
    padding:15px;
    border:1px solid #ccc;
}

Función php contar número de palabras de una cadena

3 comentarios

Función php para contar el número de palabras de una determinada cadena. Podemos usarla para limitar a un determinado número de palabras en alguna sección de nuestra web, etc.

function contar_palabras($cadena){
    return sizeof(explode(" ", $cadena));
}
// Modo de empleo:
$cadena="¡¡¡Sin LEÓN no hubiera España, que antes que Castilla leyes, Concilios, fueros y reyes, dieron prestigio a León!!!";
echo contar_palabras($cadena);
// Resultado: 18

Función php recortar cadena

9 comentarios

Función muy recomendable cuando queramos recortar una determinada cadena de texto y añadir los típicos puntos suspensivos… En esta función evitaremos cortar palabras completas, podremos decirle que busque hasta determinada palabra o letra antes de cortar la cadena…

function recortar_texto($texto, $longitud = 180) {
if((mb_strlen($texto) > $longitud)) {
    $pos_espacios = mb_strpos($texto, ' ', $longitud) - 1;
    if($pos_espacios > 0) {
        $caracteres = count_chars(mb_substr($texto, 0, ($pos_espacios + 1)), 1);
        if ($caracteres[ord('<')] > $caracteres[ord('>')]) {
            $pos_espacios = mb_strpos($texto, ">", $pos_espacios) - 1;
        }
        $texto = mb_substr($texto, 0, ($pos_espacios + 1)).'...';
    }
    if(preg_match_all("|(<([\w]+)[^>]*>)|", $texto, $buffer)) {
        if(!empty($buffer[1])) {
            preg_match_all("|</([a-zA-Z]+)>|", $texto, $buffer2);
            if(count($buffer[2]) != count($buffer2[1])) {
                $cierrotags = array_diff($buffer[2], $buffer2[1]);
                $cierrotags = array_reverse($cierrotags);
                foreach($cierrotags as $tag) {
                        $texto .= '</'.$tag.'>';
                }
            }
        }
    }
 
}
return $texto;
}
// Modo de uso
$texto = 'PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.';
$txt = recortar_texto($texto, 100);
echo $txt;

Función php cadena aleatoria

0 comentarios

Vamos a crear una función muy básica para generar una cadena aleatoria en php. Le pasaremos como parámetro el número de caracteres que querramos que se forme dicha cadena.

function cadena_aleatoria($numero){
  $caracter= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i<$numero; $i++) {
    $rand.= $caracter[rand()%strlen($caracter)];
  }
  return $rand;
 }
// Modo de uso
echo cadena_aleatoria(10);

Buscar una cadena dentro de otra en php

9 comentarios

Para buscar una cadena de texto dentro de otra en php utilizaremos la función strpos (busca la posición de la primera ocurrencia de una subcadena en una cadena).

$cadena = "Sin León no hubiera España";
$buscar = "León";
$resultado = strpos($cadena, $buscar);

if($resultado !== FALSE){
    echo "La subcadena '$buscar' fue encontrada dentro de la cadena '$cadena' en la posición: '$resultado'";
}
HTML5 Powered with CSS3 / Styling, Device Access, and Semantics