SPUG: SQL syntax Regular Expression
Josh Lanza
joshlanza at hotmail.com
Wed Jun 19 13:59:52 CDT 2002
It's actually the sql WHERE clause that comes in to this process and I need
to do some validation on that string. So the string would come in like this:
$sql = "title = 'fred's title' ";
I need handle that string, and escape the tick in "fred's".
What I want to get at here is how to handle delimiters with regular
expressions. The same thing applies with markup parsing - I know there are
modules written to do this kind of work, but I'd like to know how, for
instance, to parse an HTML document and determine if a block of HTML is
commented out. I can see how this is done with byte by byte parsing, but how
is it done with regular expressions?
Example html doc:
<html>
...
<!-- <a href="foo">foo</a> -->
...
</html>
When parsing this document, I could find the "a" tag with something like
(but more sophisticated than)
/<a href=[^>]+>/ig
However, I wouldn't know if the link were commented out. Is there a way to
do this with regular expressions?
>From: Creede Lambard <creede at penguinsinthenight.com>
>Reply-To: creede at penguinsinthenight.com
>To: Josh Lanza <joshlanza at hotmail.com>
>CC: spug-list at pm.org
>Subject: Re: SPUG: SQL syntax Regular Expression
>Date: Tue, 18 Jun 2002 21:35:31 -0700 (PDT)
>
>You might be able to get around this by using DBI:
>
> use DBI;
> my $dbh = DBI->connect('my_db', $username, $auth);
> my $sth = $dbh->prepare("select * from tbl_1 where field_1 = ?");
> $sth->execute("bob's value");
>
>and so on.
>
>If you're in a position where you CAN'T use DBI you might be able to do
>something
>like
>
> my $name = "bob's value";
> $name = normalize($name);
> my $sql = "select * from tbl_1 where field_1 = '$name'";
>
> sub normalize { my $word = shift; $word =~ s/'/''/g; return $word; }
>
>You want the 'g' in there just in case your parameter has more than one
>apostrophe ("O'Brien's Deli"). Others more wise in the way of SQL might be
>able to say whether there are other ramifications you need to be aware of.
>
>On Wed, 19 Jun 2002, Josh Lanza wrote:
>
> > Hi,
> >
> > I need to create a regexp to validate and correct apostrophe characters
> > in sql statements, and I left my Friedl book at home :(
> >
> > Example:
> >
> > $sql = "select * from tbl_1 where field_1 = 'bob's value'";
> >
> > There is a tick (bob's) that is not escaped (should be bob''s).
> >
> > Is this something I can handle with regular expressions? The idea of
> > crawling this string byte by byte seems a little distasteful ...
> >
> > TIA, Josh
> >
> > _________________________________________________________________
> > Join the world’s largest e-mail service with MSN Hotmail.
> > http://www.hotmail.com
> >
> >
> > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>-
> > POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
> > Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
> > Replace ACTION by subscribe or unsubscribe, EMAIL by your
>Email-address
> > For daily traffic, use spug-list for LIST ; for weekly,
>spug-list-digest
> > Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org
> >
> >
>
>--
> * .~. `( ---------------------------------------------------------
>` / V \ . Creede Lambard : Never rush a miracle man.
> /( )\ creede at penguinsinthenight.com : You get rotten miracles.
> ^^-^^ ---------------------------------------------------------
>
>Perl Programmer and Linux Sysadmin, reasonable rates. Inquire within.
>
_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org
More information about the spug-list
mailing list