Foros del Web » Programando para Internet » PHP »

str_replace y comillas (simples y dobles)

Estas en el tema de str_replace y comillas (simples y dobles) en el foro de PHP en Foros del Web. Hola, estoy haciendo una aplicación en php+mysql en la que gente va a tener que meter coordenadas de longitud y latitud, para ello me valgo ...
  #1 (permalink)  
Antiguo 04/05/2010, 05:59
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 2 meses
Puntos: 0
str_replace y comillas (simples y dobles)

Hola, estoy haciendo una aplicación en php+mysql en la que gente va a tener que meter coordenadas de longitud y latitud, para ello me valgo de un formulario en que la longitud y la latitud están divididas en 3 campos: uno para los grados, otro para los minutos y el último para los segundos. El objetivo de los 3 campos "normalizar" los simbolos de grado, minuto y segundo, explicándome mejor, quiero darle un formato estilo

xxºxx'xx''

y así evitar que la gente pueda poner, por ejemplo, un acento (`) por una comilla simple.

El problema lo tengo al añadir dentro de la cadena, tanto la comilla simple como la comilla doble. Como veo que no me queda muy claro os pego el código que tengo

$long_grados=mysql_real_escape_string(htmlspecialc hars(trim($_POST["long_grados"])));
$long_min=mysql_real_escape_string(htmlspecialchar s(trim($_POST["long_min"])));
$long_seg=mysql_real_escape_string(htmlspecialchar s(trim($_POST["long_seg"])));

$lat_grados=mysql_real_escape_string(htmlspecialch ars(trim($_POST["lat_grados"])));
$lat_min=mysql_real_escape_string(htmlspecialchars (trim($_POST["lat_min"])));
$lat_seg=mysql_real_escape_string(htmlspecialchars (trim($_POST["lat_seg"])));

/*Reconstruyo la longitud y latitud como previas, indicando en que lugar van los grados
minutos y segundos, por una "g","m" y "s", que luego cambiaré por su simbolo*/

$longitud_pre=sprintf("%sg %sm %ss", $long_grados, $long_min, $long_seg);
$latitud_pre=sprintf("%sg %sm %ss", $lat_grados, $lat_min, $lat_seg);

//Creo los arrays a sustituir y su valor

$buscar=array("g","m","s");
$remplazar=array("º"," ' ",' '' ');

//Reemplazo

$longitud=str_replace($buscar, $remplazar, $longitud_pre);
$latitud=str_replace($buscar, $remplazar, $latitud_pre);

Que conste que he intentado varias opciones que no han funcionado (como la más lógica hacerla directamente en el sprintf, pero tampoco fui capaz de poner las comillas que es donde tengo el problema) y os pego el código de la última.

¿Alguien me puede dar una solución?. Agradeciendo la respuesta y esperando haberme explicado bien (si quereis más aclaraciones no teneis más que pedirlas) me despido.

edit*****

Bueno, en cierto modo me había respondido con otra prueba, si simplifico todo

$longitud=sprintf('%sº%s'."'".'%s"', $long_grados, $long_min, $long_seg);
$latitud=sprintf('%sº%s'."'".'%s"', $lat_grados, $lat_min, $lat_seg);

me da la cadena en el formato que quiero (he sacado los datos con un echo y se ven tal cual). El problema está al hacer la consulta insert para mysql

$consulta=("INSERT INTO `puntos_agua` (`nombre`,`longitud`,`latitud`,`codigo`,`concejo`, `estado`,`motivo`) VALUES ('$nombre','$longitud','$latitud','$codigo','$conc ejo','$estado','$motivo')");

En que los valores de ' y '' me chafan la misma (me había fijado que los valores no se añadian a la tabla y no sabía bien la razón)

Alguna idea de como modificar la consulta?

Última edición por Forseti; 04/05/2010 a las 06:38
  #2 (permalink)  
Antiguo 04/05/2010, 07:54
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: str_replace y comillas (simples y dobles)

Hola...

No entiendo para que agregarle esos caracteres al guardar el registro. Al fin y al cabo será un dato numérico formateado.

Te sugiero que guardes los 3 valores en tu tabla sin el caracter de grados, minuto y segundo.

Cuando lo muestras, es cuando debes darle ese formato que deseas.

Código PHP:
Ver original
  1. $minuto = "40\'";
  2. $segund = "22\"";

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Etiquetas: comillas, dobles, simples
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 20:08.