Foros del Web » Programando para Internet » PHP »

caracter extraño

Estas en el tema de caracter extraño en el foro de PHP en Foros del Web. Hola a todos, os expongo el problema: Tengo un formulario con varios campos tipo area de texto y cuando introduzco cualquier cadena del tipo /algo ...
  #1 (permalink)  
Antiguo 12/05/2005, 04:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
caracter extraño

Hola a todos, os expongo el problema:

Tengo un formulario con varios campos tipo area de texto y cuando introduzco cualquier cadena del tipo /algo parece que todo va bien, mando el formulario, lo guardo en mysql y todo perfecto, lo raro es que al recuperar otra vez el campo que tenía el caracter /, me elimina todas las barras y aparece un caracter extraño, un cuadrado al principio del campo.
¿Alguien sabe a que se puede deber?
  #2 (permalink)  
Antiguo 12/05/2005, 07:45
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 13 años, 9 meses
Puntos: 0
si mandas un ejemplo te podemos ayudar
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #3 (permalink)  
Antiguo 14/05/2005, 11:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
OK, a ver si consigo explicarme mejor, esto es lo que introduzco en el area de texto:

\begin{tabular}{|l|l|}
\hline
CELDA 1 & CELDA 2\\
\hline
CELDA 3 & CELDA 4\\
\hline
\end{tabular}

lo guardo y la primera vez sale bien, pero después de cambiar de página, vuelvo a recuperar el contenido y sale así:

*egin{tabular}{|l|l|}
hline
CELDA 1 & CELDA 2\
hline
CELDA 3 & CELDA 4\
hline
end{tabular}

además de quitar varios '\' donde está el asterisco hay un caracter extraño con forma de cuadro, y la b también se la come.
  #4 (permalink)  
Antiguo 15/05/2005, 05:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
. consulta las funciones addslashes() y stripslashes().
www.php.net/addslashes
www.php.net/stripslashes

Lo de la b... quizá tenga un significado particular como \n, \r, \t ... lo desconosco...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 15/05/2005, 05:31
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
Gracias por responder jam, aunque no entiendo que quieres decir con esas funciones, el problema que tengo es q el texto tiene que quedar así, no puedo guardarlo de otra manera en la base de datos porque son comandos latex que uso para hacer pdfs, y en el momento en el que cambie algo ya no me funciona, así que el contenido del texto tendría que ser siempre el del primero ejemplo que he puesto.
Si a alguien se le ocurre algo...
Saludos
  #6 (permalink)  
Antiguo 15/05/2005, 20:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
El problema es que la barra invertida (\) es un carácter especial... como lo son las comillas y demás. Las funciones que dejé una añadiría una barra invertida antes de una barra invertida () y la hace lo contratio.. elimina barras invertidas.

Tu solución sería añadir una barra invertida antes de guardar, al recuperar como lo hace ahora te borraría solo una quedandote lo original que querías guardar.

¿Qué son comandos latex? .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 16/05/2005, 04:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
A ver si lo he entendido, lo que dices es que antes de guardar el campo haga un addslash, añada una barra '/' donde hubiera otra y cuando recupere el contenido del campo y antes de mostrarlo en pantalla hago la otra función?
Voy a probarlo y ya te contaré, a ver si funciona.
Latex es un lenguaje que sirve para la creación de documentos de texto, una alternativa a los procesadores de texto tipo Word o StarOffice, que funciona a base de comandos (parecido a los comandos de html) y que permite crear documentos científicos y profesionales con una calidad muy alta.
Aqui te dejo un enlace por si quieres saber más: http://www.latex-project.org/ también hay muchos proyectos en español, por si no te enteras en inglés.
  #8 (permalink)  
Antiguo 16/05/2005, 05:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
De todas maneras, si pones el string entre comillas simples, en vez de comillas dobles, te tomará la " \ " como un caracter normal en vez de especial. Eso si, tambien te coge los nombres de variables como literales, por lo que no sé si te servirá para tu caso concreto.
  #9 (permalink)  
Antiguo 16/05/2005, 17:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
El problema Flopi es que yo necesito, lo guarde como lo guarde, poder disponer del texto original, es decir, si hace falta ponerle comillas a cada barra necesito poder quitarselas después, ya que de las barras dependen los comandos, y si están mal puestas o entre comillas no funcionará nada.
Saludos
  #10 (permalink)  
Antiguo 16/05/2005, 17:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
¿pero cuándo se mencionó ponerlas entre comillas???...


Haber... una segunda vez con más calma:

Según tu código CELDA 3 & CELDA 4\\ ve que te está borrando una BARRA INVERTIDA (no diagonal "normal" /). ¿por qué no te borra las dos??... La barra invertida es un carácter especial, así como lo son las comillas... para escapar los carácteres enpeciales se ocupa una barra invertida.. caso muy común las comillas en los echos:
Código PHP:
echo "Esta cadena tiene \"comillas\""
La barra invertida indica que el carácter que le sigue es un carácter especial que está incluido en la cadena y no debe ser interpretado por PHP... osease, lo escapa.

En tu caso por eso solo donde tienes dos barras invertidas seguidas solo te borra una, la primera estaría escapando la segunda.. todas las demás se borran porque son interpretadas por PHP.

Lo que hará la función (simplemente aplicandola) es poner una barra invertida antes de todos dichos carácteres.. sean comillas, barras invertidas... el signo de $.. etc. No hay mayor ciencía... tu línea que rescato la guardará así: CELDA 3 & CELDA 4\\\\ Entonces al presentar tus datos las primeras escapan a las segundas y como resultado tienes tus dos barras invertidas que originalmente tenías.

Quizá no necesites aplicar la función para eliminar dichas barras pués eso ya lo hace... no estaría de más. Si puedes aplicarlo y te funciona es mejor... de lo contrario creo que solo agregandole las barras será suficiente...

.... .... yap. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 17/05/2005, 05:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
Por fin pude con el problema, resulta que el problema no estaba al meter el campo en la base de datos, la cosa estaba en que cada vez que modifico el formulario lo q hago es hacer una copia auxiliar y es ésta la que modifico. El fallo que se producia era que quitaba barras, pero solo al copiar un campo desde el original a la copia auxiliar, por eso la primera vez funcionaba bien. Así que un addslashes antes de la copia y todo va perfecto
Gracias a todos y saludos!.
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 09:48.