Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con expresiones regulares

Estas en el tema de problema con expresiones regulares en el foro de PHP en Foros del Web. buen día, tengo el siguiente problema: me gustaría extraer todo lo que hay en una expresion de este tipo algo= blablablabla& el patron es nombre ...
  #1 (permalink)  
Antiguo 05/04/2013, 21:11
 
Fecha de Ingreso: mayo-2011
Mensajes: 32
Antigüedad: 12 años, 11 meses
Puntos: 1
Pregunta problema con expresiones regulares

buen día,
tengo el siguiente problema: me gustaría extraer todo lo que hay en una expresion de este tipo algo= blablablabla& el patron es nombre de la variable signo igual el dato que me interesa y & utilizo preg_match pues solo me interesa la primera coincidencia y necesito la información de variables especificas, por ejemplo para encontrar la variable algo en el codigo utilizo

preg_match("/algo=[^&]+/", $busqueda, $resultado);

el problema es que ok me regresa algo=blablabla sin el & pero lo que quisiera recibir con resultado es solo blablabla ¿estare haciendo mal uso de la funcion?, ¿tendre mal mi expresión regular?, ¿habrá otra función que me sirva?

Lo unico que quiero es tener el string que hay entre una palabra y otra.

Otra pregunta es si habrá alguna función a la cual yo le de una cadena de inicio otra de final y el texto donde buscar y que me regrese un array con las cadenas donde comenzarón y terminarón con las cadenas que le pase, actualmente uso preg_match_all pero me preguntaba si habrá otra función parecida ya que esta me regresa arrays con mas niveles de anidación de arrays, de ante mano muchas gracias.
  #2 (permalink)  
Antiguo 05/04/2013, 21:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con expresiones regulares

¿Y todo eso con qué sentido?

Existe una función para extraer las variables de dicha cadena, parse_url(), consulta el manual.

No reinventes la rueda, usar expresiones regulares debe ser tu último recurso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/04/2013, 22:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 32
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: problema con expresiones regulares

muchas gracias por la pronta respuesta.

no la trato de inventar por eso preguntaba si habia alguna otra funcion, con respecto a la funcion que comentas no es lo que busco pero gracias.
  #4 (permalink)  
Antiguo 05/04/2013, 22:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con expresiones regulares

Yo creo que si es lo que estás buscando, el valor que estás tratando de extraer corresponde al formato de variables de una URL.

Para eso está parse_url(), extrae dichos valores y los agrupa en un arreglo, de ahí ya puedes acceder al índice que necesitas.

Además si quieres seguir intentando con RegExp debo decir que es otro lenguaje y la mecánica para extraer valores tiene su chiste, por favor consulta el manual de PHP para que veas como se capturan y extraen valores.

Pero de verdad, podrás decir que no es lo que buscas pero me gustaría escuchar tus argumentos, ya que estoy completamente seguro de que parse_url() soluciona tu problema.

Así que tu dices, recuerda que esto también es un foro de debate y de verdad me gustaría conocer tus argumentos al respecto de lo que estás buscando y por qué parse_url() no te sirve.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/04/2013, 23:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 32
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: problema con expresiones regulares

am ok bajo el html de una pagina de ahi extraigo los script con preg_match_all osea todo lo que este dentro de <script>...</script> de ahi necesito una variable:

var algo = {...};

este es un array y necesito un elemento que tambien es un array:

"algo":{}

dentro de este hay una variable que necesito:

"algo":"..."

en esta ultima es donde hay una cadena tipo url pero no es una url donde hay algunas variables que necesito:

algo1=1&algo2=2&algo3=3&algo4=4

por eso preguntaba de alguna funcion que me mandara lo que hay entre dos cadenas, por ejemplo que le mandara el html donde buscar y que le mandara "<script>" y "</script>" y que buscara en todo el documento y me regresara el contenido de todos los script que hubiera en el html lo que me arrojara lo podria volver a mandar con las cadenas "var algo = {" y "}" y asi sucesivamente.

puede ser que mi enfoque este mal o que haya alguna idea mejor, acepto sugerencias, tu idea me podria servir para la ultima parte.
  #6 (permalink)  
Antiguo 06/04/2013, 00:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con expresiones regulares

A ver, entonces podrías usar funciones para cadenas de texto para manipular todo lo que dices, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/04/2013, 22:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 32
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: problema con expresiones regulares

ya quedo solucionado muchas gracias por la ayuda proporcionada, el problema resulto ser mi ignorancia para trabajar con preg_match y preg_match_all ya habia leido el manual de php pero en si no respondia mucho mis dudas al final note el comportamiento del metodo y medio entendi como hacerle habia hecho ya un metodo pero ni alcaso checando tiempos mi funcion tardaba segundos y con preg tarda milisegundos.

Etiquetas: expresiones, regulares, variables
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:25.