PHP - Problema con str_replace

   
Vista:

Problema con str_replace

Publicado por Ale (17 intervenciones) el 03/10/2016 03:29:52
Buenas, vuelvo a molestar por ayuda...tengo una carga de datos con Jeditable y utiliza un archivo save.php en donde toma el valor de campos de textos y los guarda en BD... como toma comentarios en italiano, las comillas simples me daba error, por el tema de ser letras prohibidas y reservadas para programcion, php no soporta escapar nada de esto, entonces recurrí al srt_replace para que, al colocar una comilla en alguna parte del comentario, ésta sea reemplazada por dos comillas y, así, poder guardar el comentario y mostrar solo una, escapándose por la doble comilla y mostrarndo solo una... el comando en cuestion que tengo armado y funcionando es éste:

1
$value = htmlentities(str_replace(array("'"), "''", $_POST['value']));

El tema es que, con Jeditable, se actualiza en tiempo real al hacer "onblur" y, si apretan más de una vez el campo para escribir, sin recargar la página, se guardan dos comillas...entonces, ponen 1, aparecen 2 y si apretan nuevamente , son 4 y 8 y asi hasta el fin de los tiempos... hay alguna forma de que SOLO duplique cuando sea una sola comilla y no dos?
Por si no se entiende, dejo un gif que grabé con la animación del problema. Al hacer click fuera del campo, éste se guarda con dos comillas, que es lo que quiero, porque al recargar la página muestra una...pero si antes de recargarlahago click de nuevo, se regenera el doble de comillas...:

errorssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Problema con str_replace

Publicado por kip (828 intervenciones) el 03/10/2016 04:07:02
Hola, existe una funcion que te permite escapar las comillas agregando un backslash o barra invertida:

http://php.net/manual/es/function.addslashes.php

Ademas de eso, veo que usas como reemplazo ' ' dos comillas simples en lugar de doble comillas " quizas por eso te vuelve a hacer el reemplazo, intentalo asi:

1
$value = str_replace(array("'"), "\"", $_POST['value']);

Prueba y cuentanos si se resuelve el problema.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con str_replace

Publicado por Ale (17 intervenciones) el 03/10/2016 18:44:52
Si agrego esto:
1
$value = str_replace(array("'"), "\"", $_POST['value']);
me pone doble comilla, pero no aparece una sola se graba la doble comilla y asi queda... yo necesito que se grabe la comilla simple, por eso salvo, en vez de usar el backslash, dos comillas simples:
No hay forma de poner que:
1
str_replace(array("'", "''"), "''"
O sea que, si toma una comilla, aparezcan dos, pero si toma dos comillas simples juntas , vuelva a dejar dos comillas ? Con ese ejemplo me toma la primera comilla y la segunda como otra comilla y la duplica. No une las dos comillas simples como un solo elemento, o sea dos comillas juntas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Problema con str_replace

Publicado por kip (828 intervenciones) el 03/10/2016 20:53:16
Bueno, en ese caso haz uso de expresiones regulares, intentalo asi:

1
htmlentities(preg_replace("/\b(\')\b/", "''", $value));

Debes tener en cuenta que la comilla simple debe ir entre dos letras.

Nos cuentas si funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con str_replace

Publicado por Ale (17 intervenciones) el 03/10/2016 21:22:40
Funcionó a la perfección!!!! Muchisimas gracias....ahora pone dos quotes, y por más que salga y entre del campo, siguen las dos comillas...al actualizar la pagina, queda una!!! gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar