Foros del Web » Programando para Internet » PHP »

problema de texto a solucionar...

Estas en el tema de problema de texto a solucionar... en el foro de PHP en Foros del Web. tengo una capa div de unas dimensiones determinadas. Dentro de esa caja tengo que escribir una serie de textos.. A veces la palabra a escribir ...
  #1 (permalink)  
Antiguo 26/02/2008, 05:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 134
Antigüedad: 17 años, 2 meses
Puntos: 2
problema de texto a solucionar...

tengo una capa div de unas dimensiones determinadas. Dentro de esa caja tengo que escribir una serie de textos..
A veces la palabra a escribir es mas larga que el texto en si que entra en la caja, por lo que no se como dividir la palabra y que quede encajada en la caja...

la posible solución que se me ocurre es calcular cuantas letras me entran en la caja con respecto al font que tengo activo en ese momento...pero ni pajorera idea de como hacerlo...
si a alguien se le ocurre otra forma se agradece...

ejemplo de lo que me pasa:
  #2 (permalink)  
Antiguo 26/02/2008, 06:08
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Re: problema de texto a solucionar...

hay varias opciones, una seria ponerle desde CSS al div overflow:hidden;


pero desde php tenes algunas otra funciones q te pueden ayudar te dejo algunas



str_split

(PHP 5)
str_split -- Convertir una cadena en una matriz
Descripción

array str_split ( string cadena [, int longitud_separacion] )

Convierte una cadena en una matriz. Si el parámetro opcional longitud_separacion es especificado, la matriz devuelta estará separada en pedazos, cada uno de longitud longitud_separacion, de otro modo cada trozo tendrá un caracter de longitud.
Se devuelve FALSE si longitud_separacion es menor que 1. Si la longitud longitud_separacion excede la longitud de cadena, entonces la cadena completa es devuelta como el primer (y único) elemento de la matriz.
Ejemplo 1. Ejemplos de uso de str_split()
<?php

$cadena
= "Hello Friend";

$matriz1 = str_split($cadena);
$matriz2 = str_split($cadena, 3);

print_r($matriz1);
print_r($matriz2);


?>
La salida puede verse algo como:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)

Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)
chunk_split

(PHP 3 >= 3.0.6, PHP 4, PHP 5)
chunk_split -- Divide una cadena en trozos más pequeños
Descripción

string chunk_split ( string cadena [, int tamano_trozo [, string final]] )

Se puede utilizar para trocear una cadena en pedazos más pequeños, lo que es útil, p.ej., para convertir la salida de la función base64_encode a la semántica del RFC 2045. Inserta la cadena final (que por defecto es "\r\n") cada tamano_trozo (por defecto vale 76) caracteres. Devuelve la nueva cadena y la cadena original permanece intacta. Ejemplo 1. Ejemplo de chunk_split()
<?php
// formatear $datos usando la semantica del RFC 2045
$nueva_cadena = chunk_split(base64_encode($datos));
?>
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 26/02/2008, 06:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 134
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: problema de texto a solucionar...

si pongo div overflow hidden me corta la referencia y luego va a dar lugar a equivocaciones....
otras ideas?
  #4 (permalink)  
Antiguo 26/02/2008, 06:43
 
Fecha de Ingreso: febrero-2007
Mensajes: 134
Antigüedad: 17 años, 2 meses
Puntos: 2
lo del chunk_split pero como se cuantas letras entran?

habia pensado usar chunk_split, pero el problema es:
como e cuantas letras entran en una resolucion determinada dependiendo del tipo de letra escogida?
por ejmplo yo se que el recuadro tiene 100 pixels, asi que como se cantas letras de arial entran en 100 pixels? Asi sabria como he de trocear las palabras...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:10.