Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Cambia la longitud de un texto al pasarlo a php

Estas en el tema de Cambia la longitud de un texto al pasarlo a php en el foro de PHP en Foros del Web. Hola, tengo una web en la que tengo un formulario con un textarea y que tiene un contador de caracteres que va cambiando según escribes ...
  #1 (permalink)  
Antiguo 11/12/2014, 03:33
 
Fecha de Ingreso: marzo-2014
Ubicación: Madrid
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Cambia la longitud de un texto al pasarlo a php

Hola, tengo una web en la que tengo un formulario con un textarea y que tiene un contador de caracteres que va cambiando según escribes o borras caracteres. El límite de caracteres está en 10000.

Pues bien, hoy he probado a enviar un texto con 9996 caracteres pero cuando pasa a php utilizo la función strlen y el número que me devuelve son 10198 caracteres.

Imprimo el texto en pantalla y he utilizado una página externa para ver que no es culpa de mi código javascript que cuenta mal y me aparecen 9996 caracteres.

He imprimido la cadena de texto como un array y lo que he observado es que las palabras con acentos no las identifica (las muestra con un rombo negro y dentro una interrogación) y lo muestra como dos caracteres. He utilizado la función utf8_decode y me ha bajado a 10044 caracteres (me ha quitado las duplicidades en los acentos) así que me siguen sobrando 48 que no se muy bien de donde vienen.

Supongo que será algún problema de la codificación pero no encuentro la forma de solucionarlo.

Espero que me podáis echar un cable, gracias!

Saludos

Última edición por AlbertoRC87; 11/12/2014 a las 03:47
  #2 (permalink)  
Antiguo 11/12/2014, 03:48
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola @AlbertoRC87 , ¿has probado a usar la función mb_strlen?

Saludos :)
__________________
Diseño Web Jaén
  #3 (permalink)  
Antiguo 11/12/2014, 04:10
 
Fecha de Ingreso: marzo-2014
Ubicación: Madrid
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola, sí, la he usado de esta forma:

echo mb_strlen($stories->getStory(),"UTF-8");

Me devuelve 10044.

Saludos

Edit:

Quitando todos los saltos de línea y sustituyendolos por espacios si que me los cuenta bien con mb_strlen.

Última edición por AlbertoRC87; 11/12/2014 a las 04:19
  #4 (permalink)  
Antiguo 11/12/2014, 04:42
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola de nuevo, entonces, reemplaza todos los saltos de línea por espacios, antes de ejecutar mb_strlen
__________________
Diseño Web Jaén
  #5 (permalink)  
Antiguo 11/12/2014, 05:02
 
Fecha de Ingreso: marzo-2014
Ubicación: Madrid
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola, el problema es que no quiero perder los saltos de línea cuando tenga que mostrarlos en la web. Lo más raro es que en el formulario que tengo me los cuenta también, no se si es que se duplican al pasarlo o que cuente como dos caracteres el salto de línea, seguiré investigando.

Saludos
  #6 (permalink)  
Antiguo 11/12/2014, 05:08
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Cambia la longitud de un texto al pasarlo a php

Te aconsejo que cuando tengas problemas que creas que es en el código, pases tu código resaltado con highlight, así no tendremos que adivinar el problema y tú obtendrás mejores respuestas.. saludos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 11/12/2014, 05:20
 
Fecha de Ingreso: marzo-2014
Ubicación: Madrid
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola loncho, este es el código que utilizo para contar los caracteres en javascript:

Código Javascript:
Ver original
  1. var texthis=document.getElementById("form_story");
  2.            
  3.             texthis.addEventListener("keydown", cuenta('form_story','limitchars'));
  4.  
  5.             if (typeof texthis.addEventListener != "undefined") {
  6.                 texthis.addEventListener("keyup", function(evt) {
  7.                     cuenta('form_story','limitchars');
  8.                 }, false);
  9.             } else if (typeof texthis.attachEvent != "undefined") { //incase you support IE8
  10.                 texthis.attachEvent("onkeyup", function(evt) {
  11.                     cuenta('form_story','limitchars');
  12.                 });
  13.             }
  14.  
  15. function cuenta(idinput,idcount){
  16.                 if(idinput=="form_story")
  17.                     var newnums=document.getElementById(idinput).value.length+"/10000";
  18.                 else
  19.                     var newnums=document.getElementById(idinput).value.length+"/40";
  20.                 document.getElementById(idcount).innerHTML=newnums;
  21.             }

Saludos
  #8 (permalink)  
Antiguo 11/12/2014, 05:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Cambia la longitud de un texto al pasarlo a php

Bueno, pero eso es Javascript y no PHP, este es el foro de PHP, así que supusimos que era un script de dicho lenguaje... no hay nada mas sencillos que esto para contar los caracteres..

<?php
$cadena = "Este es mi texto con X cantidad de caracteres ...";
$ejemplo = strlen($cadena);
echo "La longitud de la cadena es: $ejemplo.";
?>

Hay maneras de limitarlo como
$limitar = substr($row[comentario],0,130);

Puedes usar el WORDWRAP

Aunque si insistes en utilizar JAvascript aqui tienes un ejemplo activo
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 11/12/2014, 06:07
 
Fecha de Ingreso: marzo-2014
Ubicación: Madrid
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Cambia la longitud de un texto al pasarlo a php

Hola loncho, el problema que tengo lo explico más arriba, tengo un contador en un textarea y al pasarlo por formulario a php los saltos de linea me los cuenta dobles no se porqué, de hecho acabo de imprimir caracter a caracter el texto en javascript y php para confirmarlo. No trato ni formateo la cadena en ningún momento así que no se de donde vienen.

Edit:

Finalmente lo he solucionado reemplazando los dos saltos de linea y de carro por uno de esta forma:

Código PHP:
Ver original
  1. $sCadena = str_replace("\r\n\r\n", "\r\n", sCadena);

Al imprimir el texto en la web reemplazo un salto de línea por dos <br/> para que se muestren los saltos de línea.

Saludos

Última edición por AlbertoRC87; 11/12/2014 a las 06:28 Razón: Resuelto

Etiquetas: formulario, longitud
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 06:48.