🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #1357

Re: Extracción de substring

#1357
From: cbd
Date: Thu, 19 Oct 2006 00:44
73 lines
3701 bytes
La verdad es que apuntaba a un string que se ingresa en un formulario 
para realizar una búsqueda en una BD en la que el usuario ingresa unas 
palabras en las que puede haber dos posibilidades:
Opción. 1:
dato1 dato2 dato3  --->  Significa que va a buscar la cadena 		 
literalmente, para usar "campo_tabla LIKE '%dato1 dato2 dato3%'.

Opción 2:
dato1 OR dato2 OR dato3 AND dato4  --->  Significa que cualquiera de 
estos datos (dato1, dato2 y dato3) puede existir en la BD y dato4 debe 
existir en la BD.

En todo caso ya lo tengo funcionando y no ocupé regex al final sino que 
me hice una función que al comienzo utiliza split(...) y de ahí el resto.

Salu2


Cristian Gutierrez escribió:
> Hoy en la ma~nana, cbazan__no_spa_m@vtr.net dijo:
>> Estimados, hace un buen rato que me estoy cabeceando con el siguiente
>> tema (en php) al cuál no le pego mucho:
>> Tengo un string en el que puede venir la siguiente cadena: "palabra1
>> OR palabra2 OR palabra3 AND palabra4".
>> Tengo que recuperar a u array las palabras que estén relacionadas por
>> los operadores OR y AND, o sea en este caso en el arreglo1 las
>> palabras: palabra1,palabra2 y palabra3; y en el arreglo2 las palabras:
>> palabra3 y palabra4.
>> He tratado de hacerlo con expresiones regulares pero sin resultado.
>> Alguien me podría iluminar por favor?
> 
> Huele a parser de SQL a medio cocinar. Pueden venir estos strings
> también?
> 
>   palabra OR palabra AND palabra OR palabra
> 
>   palabra AND palabra OR palabra AND palabra
> 
>   palabra AND palabra OR palabra OR palabra AND palabra
> 
>   palabra AND ( palabra OR palabra OR palabra ) AND palabra
> 
>   palabra OR ( palabra AND ( palabra OR palabra ) )
> 
>   ( palabra AND ( palabra OR palabra ) ) OR ( palabra AND palabra )
> 
> Si es así de arbitrario, te aviso que te vas a quedar corto con
> expresiones regulares sí o sí (debe haber un teorema con nombre pomposo
> que lo prueba). En ese caso tendrías que implementar un pequeño parser
> usando una "gramática", como se puede hacer por ejemplo con el módulo
> Parse::RecDescent de Perl (o yacc, o algún equivalente para PHP).
> 
> Por otro lado, si siempre van a ser una serie ORs y ANDs y sin
> paréntesis, entonces lo que quieres hacer es factible, pero no es de
> mucha utilidad para evaluar el resultado pues se pierde la asociatividad
> (necesitas un árbol para poder representar la expresión, y no dos
> arreglos).
> 
> Por qué no nos cuentas mejor qué necesitas hacer, a ver si a alguien se
> le ocurre una solución más adecuada?
> 
> Salu2,
> 
Technical Details
Message-ID: <eh6ea2$rc9$1@news.nivel5.cl>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!not-for-mail
References: <eh5bnq$g1i$1@news.nivel5.cl> <87vemhqkxz.fsf@guti.cl>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,cb64eda49261e625
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!not-for-mail
From: cbd <cbazan__no_spa_m@vtr.net>
Newsgroups: chile.comp.programacion
Subject: Re: Extracción de substring
Date: Wed, 18 Oct 2006 21:44:25 -0300
Organization: Varios
Lines: 74
Message-ID: <eh6ea2$rc9$1@news.nivel5.cl>
References: <eh5bnq$g1i$1@news.nivel5.cl> <87vemhqkxz.fsf@guti.cl>
NNTP-Posting-Host: pc-14-228-45-190.cm.vtr.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
X-Trace: news.nivel5.cl 1161215106 28041 190.45.228.14 (18 Oct 2006 23:45:06 GMT)
X-Complaints-To: news@news.nivel5.cl
NNTP-Posting-Date: Wed, 18 Oct 2006 23:45:06 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.7 (X11/20060921)
In-Reply-To: <87vemhqkxz.fsf@guti.cl>