Foros del Web » Programando para Internet » PHP »

Caracteres especiales en PHP

Estas en el tema de Caracteres especiales en PHP en el foro de PHP en Foros del Web. Hola que tal, espero que me puedan echar la mano con esto: Tengo problemas con un formulario que recive los datos de otro formulario. $clave ...
  #1 (permalink)  
Antiguo 07/01/2002, 15:13
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Caracteres especiales en PHP

Hola que tal, espero que me puedan echar la mano con esto:

Tengo problemas con un formulario que recive los datos de otro formulario.
$clave y $valor

echo "<input type='hidden' name='$clave' value='$valor' >";


Nota:Las de en medio son comillas simples.

El problema empieza cuando en el primer formulario se introduce una comilla simple en el campo apellido.

$clave=apellido $valor=O'Donell

Tengo problema con la comilla simple ('), ya que cuando php escupe el valor de la variable $valor, despues al procesar el formulario, se confunde con la comilla simple del apellido O'Donell.

Bueno, esa es una, y otra es que cuando paso los datos con una comilla simple, esta la convierte en una \ .

Alguien tiene alguna solucion para poder pasar estos caractes epeciales atraves de formularios de pagina???? sobre todo la comilla simple????

De ante mano gracias por su ayuda

Nota: veo que yo escribo en este foro las comillas simples, pero cuando veo el mensaje publicado, estas se han convertido en comillas dobles, porque????
  #2 (permalink)  
Antiguo 07/01/2002, 16:08
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Caracteres especiales en PHP

Hola:
Para resolver el problema de las comillas simples, podés usar un código similar a este:


<?
$valor="D'Angelo";
$valor=addslashes($valor);
echo "<input type='hidden' name='$clave' value='$valor' >";
?>


Si querés recuperar el valor sin la \ usás la función stripslashes().

Creo que hay otras funciones en PHP para manejar los caracteres especiales pero en este momento no recuerdo bien y eso que mi apellido hizo "pinchar" unas cuantas páginas por el tema de la comilla simple.
Saludos!


Leonardo D'Angelo
Buenos Aires
Argentina
  #3 (permalink)  
Antiguo 07/01/2002, 17:29
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Caracteres especiales en PHP

Hola, gracias:

Ya habia checado el addslashes pero el valor de esa variable la voy a ocupar en otro formulario que utiliza las comillas simples como limitador:

echo "<br><input type='text' name='$clave' value='$valor' >";

Y lo que hace el addslashes, es introducir una barra invertida para escapar los caracteres que no quiere que sean leidos por un shell o por php mismo, pero que pasa cuando php cambia el valor de la variable $valor por su valor real y su valor real tiene una comilla simple:
$clave=apellido
$valor=O'Domell

si sustituyo, como lo haria PHP

echo "<br><input type='text' name='apellido' value='O'Domell' >";

Al presionar el boton submir y asi ejecutar el formulario, el valor de apellido sera O unicamente y no O'Domell, es decir Domell, se pierde.

Si utilizo la funcion addslashes, lo unico que hace es agregar una barra unvertida, es decir:

echo "<br><input type='text' name='apellido' value='O\'Domell' >";

pero al mandar los datos, la variable sigue cortada hasta donde esta la primera comilla.

Gracias, espero recivir alguna otra idea.
  #4 (permalink)  
Antiguo 07/01/2002, 20:47
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Caracteres especiales en PHP

Tenés razón, perdoná por la metida de pata. ¿Es realmente necesario que uses la comilla simple como delimitador?. ¿No podés usar echo "<br><input type=\"text\" name=\"$clave\" value=\"$valor\" >"; escapando las comillas dobles para delimitar las variables?

Fijate el siguiente ejemplo

<?
$valor="D'Angelo";
$clave="apellido";
echo "<form action='test3.php'>";
echo "<input type='hidden' name='$clave' value=\"$valor\" >";
echo "<input type=submit name=submit>";
echo "</form>"
?>

y en test3.php

<?
echo "Recibi el valor: ".stripslashes($HTTP_GET_VARS["apellido"]);
?>

Espero haberte ayudado. Suerte.


Leonardo D'Angelo
Buenos Aires
Argentina
  #5 (permalink)  
Antiguo 08/01/2002, 20:49
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Caracteres especiales en PHP

Hola:

Gracias por tu tiempo y tu ayuda y tienes razon, bueno asi entendi mejor el uso de la diagonal invertida.
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 11:01.