regular expression

Thread Solved

Join Date: Jul 2007
Posts: 110
Reputation: Taffd is an unknown quantity at this point 
Solved Threads: 1
Taffd Taffd is offline Offline
Junior Poster

regular expression

 
0
  #1
Nov 27th, 2007
Is it possible to include the character < in a regular expression? I don't seem to be able to find a reference to it anywhere and am unable to build a regex with just this one character.
Reply With Quote Quick reply to this message  
Join Date: Sep 2005
Posts: 1,083
Reputation: digital-ether is just really nice digital-ether is just really nice digital-ether is just really nice digital-ether is just really nice 
Solved Threads: 66
Moderator
digital-ether's Avatar
digital-ether digital-ether is offline Offline
Veteran Poster

Re: regular expression

 
1
  #2
Nov 28th, 2007
Originally Posted by Taffd View Post
Is it possible to include the character < in a regular expression? I don't seem to be able to find a reference to it anywhere and am unable to build a regex with just this one character.
Yes, there is nothing special about the < character.

eg:

  1. preg_match("/</", "<div>some text</div>", $matches);

Is there a specific way you're using <?

The most common use in PHP is:

  1. preg_match("/<(.*?)>/", "<div>some text</div>", $matches);

which matches: <div> and </div>.
www.fijiwebdesign.com - web design and development and fun
Cpanel Email - Let users Register email accounts on your website upon registration
Ajax Chat - Fully browser based chat!
Reply With Quote Quick reply to this message  
Join Date: Jul 2007
Posts: 110
Reputation: Taffd is an unknown quantity at this point 
Solved Threads: 1
Taffd Taffd is offline Offline
Junior Poster

Re: regular expression

 
0
  #3
Nov 28th, 2007
Thanks digital-ether,
Every time I tried putting < in a regex, I found it didn't work. I'm simply trying to stop people inserting code/links in various text areas. I shall try your regex, which seems straightforward, and get back to you.
I'm wondering if I might have a problem with my keyboard.
Reply With Quote Quick reply to this message  
Join Date: Jul 2007
Posts: 110
Reputation: Taffd is an unknown quantity at this point 
Solved Threads: 1
Taffd Taffd is offline Offline
Junior Poster

Re: regular expression

 
0
  #4
Nov 28th, 2007
Well digital-ether, it didn't work.

Here's my code
$comment = htmlentities($_POST['comment']);
if (preg_match("/</", $comment)) { print 'string is NOT OK!'; } else { print 'string is OK!'; }
When I use the character <, "I get string is ok".
However if I substitute , with A, then inputting A as $comment, gives me "string is not ok". ie it works.
Reply With Quote Quick reply to this message  
Join Date: Jul 2007
Posts: 110
Reputation: Taffd is an unknown quantity at this point 
Solved Threads: 1
Taffd Taffd is offline Offline
Junior Poster

Re: regular expression

 
0
  #5
Nov 28th, 2007
My thanks to digital-ether, who was absolutely correct
For the benefit of others who may be experiencing regex problems, the character '<', being an html character, is changed by the use of htmlentities, which I had in my script.
When I changed the regex to "/&lt;/" instead of "/</", my if statement worked.

Regards to all
Taffd
Reply With Quote Quick reply to this message  
Join Date: Sep 2005
Posts: 1,083
Reputation: digital-ether is just really nice digital-ether is just really nice digital-ether is just really nice digital-ether is just really nice 
Solved Threads: 66
Moderator
digital-ether's Avatar
digital-ether digital-ether is offline Offline
Veteran Poster

Re: regular expression

 
0
  #6
Nov 28th, 2007
Originally Posted by Taffd View Post
My thanks to digital-ether, who was absolutely correct
For the benefit of others who may be experiencing regex problems, the character '<', being an html character, is changed by the use of htmlentities, which I had in my script.
When I changed the regex to "/&lt;/" instead of "/</", my if statement worked.

Regards to all
Taffd
hi Taffd,

yes, it changes to &lt; since you used htmlentities() on it.
Normally, you want to use htmlentities() last.

So do your checks first with the raw input, then use htmlentities() as the final transformation.

Eg:
Say if you use the for a forum, then when teh user submits a post, you want to check the post for HTML tags. Then you can save the post to the database or file, etc.
When its time to display the post, you then convert it to htmlentities() before display.
This preserves the original post, allows dynamic transformations on it. (Eg: if you want to say allow HTML tags later, its still there).

Just a tip...

Using a transformation before your checks can be a security hazard also, as the transformation can cause some unpredictable results. This isn't the case for your code however...
www.fijiwebdesign.com - web design and development and fun
Cpanel Email - Let users Register email accounts on your website upon registration
Ajax Chat - Fully browser based chat!
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:




Views: 1221 | Replies: 5
Thread Tools Search this Thread



Tag cloud for PHP
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC