Foros del Web » Programando para Internet » PHP »

Problema con explode y comillas

Estas en el tema de Problema con explode y comillas en el foro de PHP en Foros del Web. Hola buenas, resulta que tengo divididas una serie de frases en un texto con el caracter | y para sacar las frases de una en ...
  #1 (permalink)  
Antiguo 11/08/2005, 16:07
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
Problema con explode y comillas

Hola buenas, resulta que tengo divididas una serie de frases en un texto con el caracter | y para sacar las frases de una en una hago:

$Frases = explode ("|", $Texto);

El problema es que cuando hay comillas dobles ("texto) el explode no coge lo que le sigue a las comillas y se queda la frase a medias, sin embargo dvide bien por el caracter | en todas las frases, pero muchas incompletas debido a eso.

¿Por qué pasa? ¿Cómo evitarlo?

graciassss
  #2 (permalink)  
Antiguo 11/08/2005, 18:27
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Hay que "escapar" las comillas, para ello creo que se usa la funcion addslashes(), algo asi:

$Frases = explode ("|", addslashes($Texto));

Documentacion de addslashes()

http://www.php.net/manual/es/function.addslashes.php
  #3 (permalink)  
Antiguo 11/08/2005, 18:41
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
ya lo intenté con addslashes y nada de nada, se corta la frase en el \ (justo antes de la comilla)
  #4 (permalink)  
Antiguo 11/08/2005, 19:24
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
si puedes poner un ejemplo mas practico, xq eso de " se corta en / " por lo menos yo no lo entiendo...

un saludo
  #5 (permalink)  
Antiguo 11/08/2005, 19:30
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
al añadir antes del explode el addslashes, el texto se queda con \" en vez de solo con comillas, y luego el explode explora bien cada frase separada por | pero se sigue cortando la frase antes de la comilla, en este caso justo termina la frase con \ que es el último caracter antes de la comilla. Vamos que hace lo msimo que antes, corta la frase justo antes de la comilla aunque las separa bien.
  #6 (permalink)  
Antiguo 11/08/2005, 19:37
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
he probao asi y si q funciona:

Código PHP:
<?
$texto
="asd|kj\"hola\"als|kdj";

$trozo=explode("|"$texto);
echo 
$trozo[0]."<br>".$trozo[1]."<br>".$trozo[2];
?>
SACA ESTO:

asd
kj"hola"als
kdj
  #7 (permalink)  
Antiguo 12/08/2005, 01:49
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
creo que te da error por:
Cita:
al añadir antes del explode el addslashes
ponlo como dicen:
Código PHP:
$frases explode ("|",addslashes($texto)); 
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #8 (permalink)  
Antiguo 12/08/2005, 04:28
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
Lo tenía bien puesto, el problema ya lo he visto. No me hacen falta addslashes. Esque cuando haces un echo del $Texto o de la $Frase[X] sale perfectamente, pero el tema es que yo las uso dentro de un Formulario del tipo:

echo "
<input type=\"hidden\" name=\"ID\" value=\"$ID\"><br>
Introducción<br>
<textarea name=\"Introduccion\" rows=19 cols=50>$Introduccion</textarea> <br>
<br><br><br>Preguntas/Respuestas:<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"636\" id=\"AutoNumber1\">
<tr> <td width=\"324\"> P1-<br><input type=\"text\" name=\"P1\" value=\"$P[0]\" IZE=\"50\" ><br>
R1-<TEXTAREA NAME=\"R1\" COLS=\"50\" ROWS=\"3\">$R[0]</TEXTAREA><BR><BR> P2-<INPUT TYPE=\"text\" NAME=\"P2\" value=\"$P[1]\" SIZE=\"50\" >
.....
.....

Y ahí $P[X] (equivalente a $Frase[X]) siempre se me corta en las comillas. El problema es en el Formulario que no sé por qué me corta las frases.
  #9 (permalink)  
Antiguo 13/08/2005, 20:30
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
alguna idea???
  #10 (permalink)  
Antiguo 13/08/2005, 22:11
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Lo que pasa es que seguramente la variable $P[X] contiene comillas dobles y se está interpretando como final del valor del campo.
Lo que debes hacer es reemplazar las comillas dobles por su equivalente &quot;.
Para esto, puedes utilizar la función htmlspecialchars($P[X])
http://www.php.net/htmlspecialchars

Saludos
  #11 (permalink)  
Antiguo 14/08/2005, 06:09
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
correcto!!

muchas graciass :)
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 03:31.