Foros del Web » Programando para Internet » PHP »

Extraer una porción de una cadena

Estas en el tema de Extraer una porción de una cadena en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando extraer lo que se encuentra entre el "?" y el "=" de una URL del siguiente tipo: http://...../?cat=algo . En ...
  #1 (permalink)  
Antiguo 19/08/2004, 19:04
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Pregunta Extraer una porción de una cadena

Hola a todos.

Estoy intentando extraer lo que se encuentra entre el "?" y el "=" de una URL del siguiente tipo: http://...../?cat=algo. En ese caso sería "cat".

Solo quiero que el valor "cat" quede almacenado en una variable. No se qué función usar para hacer esto. Estuve pensando que con expresiones regulares...

La verdad...¿me ayudan?

Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)

Última edición por drcyber; 19/08/2004 a las 19:25
  #2 (permalink)  
Antiguo 19/08/2004, 20:10
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
A ver revisa

www.php.net/explode
www.php.net/split
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #3 (permalink)  
Antiguo 19/08/2004, 20:17
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Hombre... con explode() no se puede hacer eso. Tendría que hacer 2 explode() lo cual me parece innecesario. split() no se por qué razón no me funciona. Sin embargo, dicen en el manual de PHP que mientras se pueda usar explode() es mejor no activar el motor de expresiones regulares para no recargar el servidor.

Entonces, en vista de optimizar, saqué esto:

Código PHP:
$url1 explode("?",$_SERVER['REQUEST_URI']);
$url2 = isset($url1['1'])?explode("=",$url1['1']):''
Entonces, la porción de cadena que deseo se encuentra en $url2[0].

En 2 lineas sale el code, ¿qué opinan?
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #4 (permalink)  
Antiguo 19/08/2004, 20:40
Avatar de gds
gds
 
Fecha de Ingreso: febrero-2003
Mensajes: 31
Antigüedad: 21 años, 1 mes
Puntos: 0
por qué no intentas tratar la matriz $_GET.
allí es donde se encuentra $cat, tengas las register_globals activadas o no.
en realidad, no sé como hacerlo, pero con alguna función tiene que aparecer.

espero que te sirva de algo
__________________
It is not enough for a handful of experts to attempt the solution of a problem, to solve it and then to apply it. The restriction of knowledge to an elite group destroys the spirit of society and leads to its intellectual impoverishment. - Albert Einstein
  #5 (permalink)  
Antiguo 19/08/2004, 20:44
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Claro, cat es una variable... ¿pero cómo hago para conocer el nombre de la variable?... tengo que hacer algo genérico. Que sirva para cualquier cosa que se coloque ahí.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #6 (permalink)  
Antiguo 19/08/2004, 23:41
AKB
 
Fecha de Ingreso: agosto-2004
Mensajes: 52
Antigüedad: 19 años, 8 meses
Puntos: 0
extract($_GET); generaría todas las variables y sus valores al tratarse de un superglobal.

Esto emularía el mismo efecto, pero con algo de control sobre el mismo:

<?php
if (!ini_get("register_globals")){
foreach ($_REQUEST as $k=>$v){
if (!isset($GLOBALS[$k])){
${$k}=$v;
}
}
}
?>

Si lo único que quieres saber es todo lo que se pasa por la url para hacer una cosa u utra.. explode es la solución.
  #7 (permalink)  
Antiguo 20/08/2004, 07:03
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
extract() no me serviría porque simplemente separaría el array $_GET en variables... pero... no podría conocer el nombre de dicha variables de forma genérica.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #8 (permalink)  
Antiguo 20/08/2004, 07:31
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
No sé si esto te servirá pero por intentar ayudar :

Código PHP:
<?
reset 
($_GET);
$valor=(count($_GET)>=1) ? current($_GET) : "";
$variable=(count($_GET)>=1) ? key($_GET) : "";
print 
$variable "=>"$valor;
?>
Salu2 ;)
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 15:30.