Foros del Web » Programando para Internet » PHP »

Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inserción en SQL

Estas en el tema de Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inserción en SQL en el foro de PHP en Foros del Web. Hola a todos: Estoy teniendo un problema de lo más tonto pero al que no hallo la solución: en una tabla SQL (MySQL) tengo un ...
  #1 (permalink)  
Antiguo 29/10/2017, 12:21
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Pregunta Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inserción en SQL

Hola a todos:

Estoy teniendo un problema de lo más tonto pero al que no hallo la solución: en una tabla SQL (MySQL) tengo un campo de tipo texto con al que voy a introducir retornos de carro (\r) y nueva línea (\n). Cuando realizo una prueba en PhpMyAdmin se muestra la posibilidad de crear código PHP para añadirlo a un script. Por ejemplo:

INSERT INTO tbl_test (test_text) VALUES (\'ABC\\r\\nDEF\')

Así pues, implemento un script de prueba con un textarea y un input que envía los datos a otro script que lo procesa. Antes del procesado real hago que escriba la cadena del textarea con el fin de verificar los datos. Sigo el formato aconsejado por el PhpMyAdmin pero no consigo que PHP pinte o añada una barra invertida más delante de cada carácter no imprimible. Lo único que consigo es:

INSERT INTO tbl_test (test_text) VALUES (\'ABC\r\nDEF\')

La función que estoy utilizando para conseguir la cadena resultante es:

$_POST["MyTextarea"] = "\'".str_replace(chr(13).chr(10), "\\r\\n", $_POST["MyTextarea"]."\'");

Supongo que habrá alguna manera de poder añadir esas barras invertidas sin que desaparezcan. Lo he probado todo pero seguro que hay es algo muy tonto de hacer o alguna función que aún no he probado.

Como siempre agradezco por adelantado cualquier aportación o ayuda.

Un saludo para todos.
__________________
A. Uttranadhie
  #2 (permalink)  
Antiguo 29/10/2017, 14:16
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inser

Pues ya que se esta tocando el tema phpmyadmin,
hagamos los querys allá y veamos el resultado allá (y en scripts php)

Código SQL:
Ver original
  1. //Ejecutando en phpmyadmin
  2. INSERT INTO learning_table1 (text120) VALUES ('ABC\\r\\nDEF');
  3. //Luego al ver el registro en phpmyadmin o en un script php
  4. ABC\r\nDEF

Código SQL:
Ver original
  1. //Ejecutando en script php
  2. 'INSERT INTO learning_table1 (text120) VALUES (\'ABC\\r\\nDEF\')';
  3. //Luego al ver el registro en script php
  4.  
  5. ABC DEF
  6. //Viendolo en phpmyadmin
  7. ABC
  8. DEF

Alguno de esos resultados es el que se quiere? o es otra cosa?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 30/10/2017, 09:07
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inser

Hola:

Lo que necesito es que salga como lo has puesto en el segundo código puesto que es el que funciona. El problema radica en la doble barra invertida. Cuando reemplazo los caracteres 13 y 10 por "\\r\\n" sólo me aparece "\r\n".

Gracias y un saludo.
__________________
A. Uttranadhie
  #4 (permalink)  
Antiguo 30/10/2017, 18:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inser

Uhm, ¿y si intentas de forma anidada?

Código PHP:
Ver original
  1. $_POST['MyTextarea'] = str_replace(chr(13), "\\r", $_POST['MyTextarea']."\'");
  2. $_POST['MyTextarea'] = str_replace(chr(10), "\\n", $_POST['MyTextarea']."\'");
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 01/11/2017, 03:28
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inser

Hola de nuevo:

Pues ni anidando porque, al final, es la misma concatenación de una cadena. Lo que ocurre es que PHP convierte "\\r", por ejemplo, en "\r".

Gracias y un saludo.
__________________
A. Uttranadhie
  #6 (permalink)  
Antiguo 01/11/2017, 06:11
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Creación de cadena con retorno de carro (\r) y nueva línea (\n) para inser

Entonces tal vez podría intentarse hacer lo que se quiere,
pero ya no por php, sino por la base de datos
mediante un trigger o un store procedure, intenta de ese modo y nos comentas.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: feed, line, return
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 17:23.