[PHP] Re: regular expression help!
First stripslashes() and all newlines [\n\r*]. It makes the regex much easier. $pattern= "%%i; preg_match($pattern, $string, $match); If more than one in the string, use preg_match_all(). Now print_r($match); so you can see the result. Now, read the doc and see why each term is used. Note, I assumed your string can have some variation and still be W3C compatible e.g., src="." and src= "", etc. You may need to be able to handle additional variations. Al William Stokes wrote: Hello, Can someone here give me a glue how to do the following. I guess I need to use regular expressions here. I have absolutely zero experience with regular expressions. (if there's another way to do this I don't mind. I jus need to get this done somehow :) I need to strip all characters from the following text string exept the image path... "src=\"../../images/new/thumps/4123141112007590373240.jpg\" />"...and then store the path to DB. Image path lengh can vary so I guess that I need to extract all characters after scr=\"until next\"or somethig similar. Thanks for your advise! -Will -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: regular expression help
You were right, I removed the reference to global $mac and it started working great. Thanks. It seems sometimes another set of eyes to catch stuff really helps... thanks. Jason wrote: Jason wrote: Simple functions to check & fix if necessary invalid formating of a MAC address... I seem to be having problems with the global variable $mac not being returned from the fix_mac() function. Any help is appreciated. global $mac; if( eregi( "^[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}$", $mac ) ) { return 0; } else { return 1; } } /* * check validity of MAC & do replacements if necessary */ function fix_mac( $mac ) { global $mac; /* strip the dash & replace with a colon */ if( eregi( "^[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}$", $mac ) ) { $mac = preg_replace( "/\-/", ":", $mac ); return $mac; } /* add a colon for every two characters */ if( eregi( "^[0-9A-Fa-f]{12}$", $mac ) ) { /* split up the MAC and assign new var names */ @list( $mac1, $mac2, $mac3, $mac4, $mac5, $mac6 ) = @str_split( $mac, 2 ); /* put it back together with the required colons */ $mac = $mac1 . ":" . $mac2 . ":" . $mac3 . ":" . $mac4 . ":" . $mac5 . ":" . $mac6; return $mac; } } // do our checks to make sure we are using these damn things right $mac1 = "00aa11bb22cc"; $mac2 = "00-aa-11-bb-22-cc"; $mac3 = "00:aa:11:bb:22:cc"; // make sure it is global global $mac; // if mac submitted is invalid check & fix if necessary if( chk_mac( $mac1 ) != 0 ) { $mac = fix_mac( $mac1 ); echo $mac1 . " converted to " . $mac . ""; } if( chk_mac( $mac2 ) != 0 ) { $mac = fix_mac( $mac2 ); echo $mac2 . " converted to " . $mac . ""; } if( chk_mac( $mac3 ) != 0 ) { $mac = fix_mac( $mac3 ); echo $mac3 . " converted to " . $mac . ""; } ?> Still does not resolve the problem. declaring $mac as global in the chk_mac() function. -- Jason Gerfen "And remember... If the ladies don't find you handsome, they should at least find you handy..." ~The Red Green show -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: regular expression help
Hi, >From what i can see you dont even need to call global, as your passing variables to the function ? this could be causing the script to confuse itself. hth On Fri, 21 Jan 2005 09:30:21 -0700, Jason <[EMAIL PROTECTED]> wrote: > Jason wrote: > > Simple functions to check & fix if necessary invalid formating of a MAC > > address... I seem to be having problems with the global variable $mac > > not being returned from the fix_mac() function. Any help is appreciated. > > > > > /* > > * ex. 00:AA:11:BB:22:CC > > */ > > function chk_mac( $mac ) { > global $mac; > > if( eregi( > > "^[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}$", > > $mac ) ) { > > return 0; > > } else { > > return 1; > > } > > } > > > > /* > > * check validity of MAC & do replacements if necessary > > */ > > function fix_mac( $mac ) { > > global $mac; > > /* strip the dash & replace with a colon */ > > if( eregi( > > "^[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}$", > > $mac ) ) { > > $mac = preg_replace( "/\-/", ":", $mac ); > > return $mac; > > } > > /* add a colon for every two characters */ > > if( eregi( "^[0-9A-Fa-f]{12}$", $mac ) ) { > > /* split up the MAC and assign new var names */ > > @list( $mac1, $mac2, $mac3, $mac4, $mac5, $mac6 ) = @str_split( $mac, > > 2 ); > > /* put it back together with the required colons */ > > $mac = $mac1 . ":" . $mac2 . ":" . $mac3 . ":" . $mac4 . ":" . $mac5 . > > ":" . $mac6; > > return $mac; > > } > > } > > > > // do our checks to make sure we are using these damn things right > > $mac1 = "00aa11bb22cc"; > > $mac2 = "00-aa-11-bb-22-cc"; > > $mac3 = "00:aa:11:bb:22:cc"; > > > > // make sure it is global > > global $mac; > > > > // if mac submitted is invalid check & fix if necessary > > if( chk_mac( $mac1 ) != 0 ) { > > $mac = fix_mac( $mac1 ); echo $mac1 . " converted to " . $mac . ""; > > } > > if( chk_mac( $mac2 ) != 0 ) { > > $mac = fix_mac( $mac2 ); echo $mac2 . " converted to " . $mac . ""; > > } > > if( chk_mac( $mac3 ) != 0 ) { > > $mac = fix_mac( $mac3 ); echo $mac3 . " converted to " . $mac . ""; > > } > > > > ?> > Still does not resolve the problem. declaring $mac as global in the > chk_mac() function. > > -- > Jason Gerfen > Student Computing > Marriott Library > 801.585.9810 > [EMAIL PROTECTED] > > "And remember... If the ladies > don't find you handsome, they > should at least find you handy..." > ~The Red Green show > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: regular expression help
Jason wrote: Simple functions to check & fix if necessary invalid formating of a MAC address... I seem to be having problems with the global variable $mac not being returned from the fix_mac() function. Any help is appreciated. global $mac; if( eregi( "^[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}\:[0-9A-Fa-f]{2}$", $mac ) ) { return 0; } else { return 1; } } /* * check validity of MAC & do replacements if necessary */ function fix_mac( $mac ) { global $mac; /* strip the dash & replace with a colon */ if( eregi( "^[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}\-[0-9A-Fa-f]{2}$", $mac ) ) { $mac = preg_replace( "/\-/", ":", $mac ); return $mac; } /* add a colon for every two characters */ if( eregi( "^[0-9A-Fa-f]{12}$", $mac ) ) { /* split up the MAC and assign new var names */ @list( $mac1, $mac2, $mac3, $mac4, $mac5, $mac6 ) = @str_split( $mac, 2 ); /* put it back together with the required colons */ $mac = $mac1 . ":" . $mac2 . ":" . $mac3 . ":" . $mac4 . ":" . $mac5 . ":" . $mac6; return $mac; } } // do our checks to make sure we are using these damn things right $mac1 = "00aa11bb22cc"; $mac2 = "00-aa-11-bb-22-cc"; $mac3 = "00:aa:11:bb:22:cc"; // make sure it is global global $mac; // if mac submitted is invalid check & fix if necessary if( chk_mac( $mac1 ) != 0 ) { $mac = fix_mac( $mac1 ); echo $mac1 . " converted to " . $mac . ""; } if( chk_mac( $mac2 ) != 0 ) { $mac = fix_mac( $mac2 ); echo $mac2 . " converted to " . $mac . ""; } if( chk_mac( $mac3 ) != 0 ) { $mac = fix_mac( $mac3 ); echo $mac3 . " converted to " . $mac . ""; } ?> Still does not resolve the problem. declaring $mac as global in the chk_mac() function. -- Jason Gerfen Student Computing Marriott Library 801.585.9810 [EMAIL PROTECTED] "And remember... If the ladies don't find you handsome, they should at least find you handy..." ~The Red Green show -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: Regular expression help?
* Jas <[EMAIL PROTECTED]>: > Not sure if anyone knows of a good way to match strings of this type... > 00:02:8b:0c:2f:09 > > I have tried this but its not working. > > !eregi("^[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}$",$_POST['mac']) Use the perl compatible regexps instead: !preg_match('/^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$/', $_POST['mac']) This searches for XX: 5 followed by XX, where XX is 0-9, A-F, or a-f. I _think_ the POSIX regexps can do some grouping like this as well, but I'm not absolutely sure. -- Matthew Weier O'Phinney Webmaster and IT Specialist National Gardening Association 802-863-5251 x156 mailto:[EMAIL PROTECTED] http://www.garden.org http://www.kidsgardening.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: Regular Expression Help in my PHP! Sorry if wrong group
I figured out what I was doing wrong. My regexp should of looked like this /]*>(Tampa)<\/a>/ and that made it more specific and kept it to that match. Jason Lehman wrote: I have a script that turns certain words into links. That I am having no problems with, it is when I want to turn the links back in to plain text that I am having the problem. Below are my examples. And I know my regex is being greedy but I don't know how to stop it from being so damn greedy I thought the ? mark would help but it didn't. Any help would be appreciated. So here it goes: The code: $strStr = "This is USF at Tampa. This is USF at Tampa."; echo $strStr."\n"; $strStr = preg_replace("/(Tampa)<\/a>/","\\1",$strStr); echo $strStr."\n"; $strStr = preg_replace("/(USF)<\/a>/","\\1",$strStr); echo $strStr."\n"; The output: This is USF at Tampa. This is USF at Tampa. This is Tampa. This is Tampa. This is Tampa. This is Tampa. The expected output: This is USF at Tampa. This is USF at Tampa. This is USF at Tampa. This is USF at Tampa. This is USF at Tampa. This is USF at Tampa. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: regular expression help
This should do (but ofcourse you might want to play a bit with it) $mem = ' http://www.mydomain.com/mypage.php";>something is fine http://www.yourdomain.com/yourpage.php";>something is wrong http://www.yourdomain.com/yourpage.php";>something is fine http://www.lgwm.org/";>lgwm http://www.google.com"; onclick="javascript:alert(\'hello\');">Google! '; function handler($theTag, $theDomain) { if (!strstr($theDomain, "mydomain.com")) { $theTag = strstr($theTag, " "); $theTag = "]*>/eis"; $t = preg_replace($re, "handler('\\0', '\\2')" ,$mem); echo $t; //greetings R&Ze! "Justin French" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > hi all, > > I have some user-supplied text on a content driven site. > I am allowing tags inside the main text, BUT I want > any links to external sites (not on the chosen domain) > to include a ' TARGET="_new" ' element. > > So, > > http://www.mydomain.com/mypage.php";>something is fine > http://www.yourdomain.com/yourpage.php";>something is wrong > http://www.yourdomain.com/yourpage.php"; > TARGET="_new">something is fine > > And of course there are all the variants with and without > the www, and with and without sub directories and pages. > > I'[d also like to make sure the dopey people have put a > close tag in. > > > I've got a few ideas on how it might be done, but I need > to do it the right way, avoiding slight human errors etc. > > > Has anyone got something written, or can point me in the > right direction? > > > Justin French -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP] Re: Regular Expression help
On Fri, 29 Jun 2001 23:43, Clayton Dukes wrote: > Okay, here's what I have so far: > > ---snip--- > if ((!$email) > >|| ($email=="") >|| (!eregi("^[_\.0-9a-z-]+@domain.+[a-z]",$email)) > >) > $stop = ""._ERRORINVEMAIL.""; > ---snip--- > > This works, but how can I add a second domain? How 'bout; ---snip--- if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@domain|otherdomain.+[a-z]",$email) ) $stop = ""._ERRORINVEMAIL.""; ---snip--- Cheers, Brad -- Brad Hubbard Congo Systems 12 Northgate Drive, Thomastown, Victoria, Australia 3074 Email: [EMAIL PROTECTED] Ph: +61-3-94645981 Fax: +61-3-94645982 Mob: +61-419107559 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP] Re: Regular Expression help
Clayton Dukes wrote: > Okay, here's what I have so far: > > ---snip--- > if ((!$email) >|| ($email=="") >|| (!eregi("^[_\.0-9a-z-]+@domain.+[a-z]",$email)) >) > $stop = ""._ERRORINVEMAIL.""; > ---snip--- > > This works, but how can I add a second domain? > ie: > Try: ^[_\.0-9a-z-]+@(domainA|domainB|etc)\.[a-z]{2,3}$ A complete email address check is insanely hard to to if you want to get RFC 822 compliant-checking, but who needs that anyways? (fwiw, the regex in Mastering Regular Expressions for checking email address syntax is some 4,700 bytes long.) J -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP] Re: Regular Expression help
Okay, here's what I have so far: ---snip--- if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@domain.+[a-z]",$email)) ) $stop = ""._ERRORINVEMAIL.""; ---snip--- This works, but how can I add a second domain? ie: ---snip--- if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@domain.+[a-z]",$email)) || (!eregi("^[_\.0-9a-z-]+@otherdomain.+[a-z]",$email)) ) $stop = ""._ERRORINVEMAIL.""; ---snip--- This doesn't work. (it returns the error no matter what I enter) Thanks guys (and gals?) Clayton Dukes CCNA, CCDA, CCDP, CCNP Download Free Essays, Term Papers and Cisco Training from http://www.gdd.net - Original Message - From: "Clayton Dukes" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, June 29, 2001 9:08 AM Subject: Regular Expression help > Hi everyone, > > I have a new user function that checks e-mail addresses. > I wish to only allow people from two different domains to register. > How can I filter out all other e-mail addresses and return an error if it's > not from those domains. > > Here's what I have: > > if ((!$email) || ($email=="") || > (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))) $stop > = ""._ERRORINVEMAIL.""; > > What this currently does is just makes sure it's a valid e-mail address. > What I'd like it to do is if the user enters anything except @domain1.com or > @domain2.com it spits out the error (ERRORINVEMAIL) > > So (I think) It would look something like this: > > if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@([DdOoMmAaIiNn1] || > (or statement???) [DdOoMmAaIiNn2-]+\.)+[a-z]{2,3}$",$email))) $stop = > ""._ERRORINVEMAIL.""; > > > Of course, this doesn't work, but you get the point. > > > Thanks! > P.S. > Thanks for the Awesome List! > > Clayton Dukes > CCNA, CCDA, CCDP, CCNP > Download Free Essays, Term Papers and Cisco Training from http://www.gdd.net > > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]