[PHP] Regex Problem
Hi Folks, I have a serious problem. must create a regular expression against all that is between single quote or double quotes. Easy? Ok, i know, but i need that "everything" must to be too an single quote or double quote. If i have this SQL command: SELECT * FROM TSTRENIC.MEI_ACESSO WHERE UPPER(DS_MEI_ACS) LIKE *'%NOME' ASD ' AS'ASD'%' *AND USUARIO = *'oaksdpokasd'asda'* ORDER BY DS_MEI_ACS ASC; SELECT * FROM TSTRENIC.MEI_ACESSO WHERE USUARIO_DATA BETWEEN *'2007-01-02'*AND *'2008-07-08'* Anyone have any idea? I need an expression which case the fields in bold. Regards, Igor Escobar Systems Analyst & Interface Designer + http://blog.igorescobar.com + http://www.igorescobar.com + @igorescobar (twitter)
Re: [PHP] Regex Problem
""Boyd, Todd M."" wrote in message news:33bde0b2c17eef46acbe00537cf2a190037b7...@exchcluster.ccis.edu... > -Original Message- > From: MikeP [mailto:mpel...@princeton.edu] > Sent: Thursday, December 18, 2008 8:43 AM > To: php-general@lists.php.net > Subject: [PHP] Regex Problem > > Hello, > I have a quirky behavior I'm trying to resolve. > I have a REGEX that will find a function definition in a php file: > .function InsertQuery($table,$fields,$values). > the REGEX is: > $regex='/function [a-z]* *([$a-zA-Z]*)/'; > the problem is that: > 1. a slash is automattically put in front of the $. This is good but I > dont > know how it gets there. > 2.a slash is NOT put in front of the parenthesis. Thats bad > 3. If I try to escape the parenthesis with a \ , I get \\. > Help Mike, Certain characters are considered "special" in RegEx. The $ means "end of the line," so it must be escaped to avoid confusing its meaning. I was not sure it had to be escaped within a character set [], but that may very well be the case. Try this: $regex = '/function\s+[-_a-z0-9]+\s*\((\s*\$?[-_a-z0-9]+\s*,?)*\s*\)/i'; The word "function" is followed by 1 or more spaces (or tabs). The function name [-_a-z0-9] can be a combination of alpha-numeric characters, underscore, and dash. Then, there is optional whitespace between the name of the function and its parameters. The opening parenthesis "(" for parameters has been escaped (as has the closing parenthesis). Then, in a repeatable capture group, the parameters can be grabbed: Indefinite whitespace, an optional $ (because maybe you're not using a variable, eh?), one or more alpha-numeric, underscore, or dash characters, followed by indefinite whitespace and an optional comma (if there are more arguments). After any number of instances of the capture group, the regex continues by looking for indefinite whitespace followed by the closing parenthesis for the function text. The "i" switch at the end simply means that this regex pattern will be treated as case-insensitive ('APPLE' == 'apple'). If you're not worried about actually splitting up the function parameters into capture groups, then you can just use a look-ahead to ensure that you grab everything up till the LAST parenthesis on the line. $regex = '/function\s+[-_a-z0-9]+\s*\(.*?\)(?=.*\)[^)]*)/i'; That one probably needs to be tweaked a bit in order to actually grab the last parenthesis (instead of just checking for its existence). If you're willing to trust the text you'll be searching through, you can probably avoid that "last parenthesis" rule altogether, and make a lazy regex: $regex = '/function\s+[-_a-z0-9]+\s*\(.*?/i'; Once you get to the opening parenthesis for the function parameters, that last regex assumes that the rest of the line will also include that function declaration, and just grabs everything left. If you are using a regex setup to where the dot marker can also consume newline or carriage return characters, just throw a "$" at the end of the regex (before the flags part "/i") in order to tell it just to grab characters until it reaches the end of the line: $regex = '/function\s+[-_a-z0-9]+\s*\(.*?$/i'; These are all untested, but hopefully I've given you a nudge in the right direction. If you are still getting strange behavior out of your PCRE engine, then perhaps you have a different version installed than what I'm used to--all of the above should work (perhaps with some very minor changes) in PHP. HTH, // Todd GOT IT!! Thanks. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Regex Problem
> -Original Message- > From: MikeP [mailto:mpel...@princeton.edu] > Sent: Thursday, December 18, 2008 8:43 AM > To: php-general@lists.php.net > Subject: [PHP] Regex Problem > > Hello, > I have a quirky behavior I'm trying to resolve. > I have a REGEX that will find a function definition in a php file: > .function InsertQuery($table,$fields,$values). > the REGEX is: > $regex='/function [a-z]* *([$a-zA-Z]*)/'; > the problem is that: > 1. a slash is automattically put in front of the $. This is good but I > dont > know how it gets there. > 2.a slash is NOT put in front of the parenthesis. Thats bad > 3. If I try to escape the parenthesis with a \ , I get \\. > Help Mike, Certain characters are considered "special" in RegEx. The $ means "end of the line," so it must be escaped to avoid confusing its meaning. I was not sure it had to be escaped within a character set [], but that may very well be the case. Try this: $regex = '/function\s+[-_a-z0-9]+\s*\((\s*\$?[-_a-z0-9]+\s*,?)*\s*\)/i'; The word "function" is followed by 1 or more spaces (or tabs). The function name [-_a-z0-9] can be a combination of alpha-numeric characters, underscore, and dash. Then, there is optional whitespace between the name of the function and its parameters. The opening parenthesis "(" for parameters has been escaped (as has the closing parenthesis). Then, in a repeatable capture group, the parameters can be grabbed: Indefinite whitespace, an optional $ (because maybe you're not using a variable, eh?), one or more alpha-numeric, underscore, or dash characters, followed by indefinite whitespace and an optional comma (if there are more arguments). After any number of instances of the capture group, the regex continues by looking for indefinite whitespace followed by the closing parenthesis for the function text. The "i" switch at the end simply means that this regex pattern will be treated as case-insensitive ('APPLE' == 'apple'). If you're not worried about actually splitting up the function parameters into capture groups, then you can just use a look-ahead to ensure that you grab everything up till the LAST parenthesis on the line. $regex = '/function\s+[-_a-z0-9]+\s*\(.*?\)(?=.*\)[^)]*)/i'; That one probably needs to be tweaked a bit in order to actually grab the last parenthesis (instead of just checking for its existence). If you're willing to trust the text you'll be searching through, you can probably avoid that "last parenthesis" rule altogether, and make a lazy regex: $regex = '/function\s+[-_a-z0-9]+\s*\(.*?/i'; Once you get to the opening parenthesis for the function parameters, that last regex assumes that the rest of the line will also include that function declaration, and just grabs everything left. If you are using a regex setup to where the dot marker can also consume newline or carriage return characters, just throw a "$" at the end of the regex (before the flags part "/i") in order to tell it just to grab characters until it reaches the end of the line: $regex = '/function\s+[-_a-z0-9]+\s*\(.*?$/i'; These are all untested, but hopefully I've given you a nudge in the right direction. If you are still getting strange behavior out of your PCRE engine, then perhaps you have a different version installed than what I'm used to--all of the above should work (perhaps with some very minor changes) in PHP. HTH, // Todd -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Regex Problem
Hello, I have a quirky behavior I'm trying to resolve. I have a REGEX that will find a function definition in a php file: .function InsertQuery($table,$fields,$values). the REGEX is: $regex='/function [a-z]* *([$a-zA-Z]*)/'; the problem is that: 1. a slash is automattically put in front of the $. This is good but I dont know how it gets there. 2.a slash is NOT put in front of the parenthesis. Thats bad 3. If I try to escape the parenthesis with a \ , I get \\. Help -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
On Thu, June 1, 2006 4:56 am, Merlin wrote: >>> ^(.*)_a[0-9](.*).htm$ Don't know what it will help, but you need \\.htm in PHP to get \.htm in PCRE to escape the . in the extension. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
Merlin wrote: Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? Thank you for any help, Merlin Escape the period before htm. -- John C. Nichel IV Programmer/System Admin (ÜberGeek) Dot Com Holdings of Buffalo 716.856.9675 [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
Robin Vickery schrieb: On 01/06/06, Merlin <[EMAIL PROTECTED]> wrote: Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? It won't match something without an _a in it. So there's something you're not mentioning. 'test_a9393.htm' matches. 'a9393.htm' does not match. -robin Thank you robin! That saved my ass :-) Actually my regex was quit fine, the problem was that there was a search function searching for is_numeric that was redirecting to another page *lol* Best regards, Merlin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
On 01/06/06, Merlin <[EMAIL PROTECTED]> wrote: Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? It won't match something without an _a in it. So there's something you're not mentioning. 'test_a9393.htm' matches. 'a9393.htm' does not match. -robin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] regex problem
[snip] Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? Thank you for any help, Merlin [/snip] How about this: (\w)+(_a){1}(\w)+\.htm$ Worked for me :) HTH Dan -- Dan Parry Senior Developer Virtua Webtech Ltd http://www.virtuawebtech.co.uk -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.8.0/352 - Release Date: 30/05/2006 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
Dave Goodchild schrieb: On 01/06/06, Merlin <[EMAIL PROTECTED]> wrote: Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? Thank you for any help, Merlin Try this: ^(.*)(_a{1})(\d+).htm$ in your regex you are looking for any instance of _, a OR a sequence of numbers. I think this will search for zero or more characters, one instance of _a, then one or more numbers, then .htm. Hi, unfortunatelly it does not work. But you are right my regex: ^(.*)_a[0-9](.*).htm$ seems to make an OR with _a OR numbers , but I would like to have an AND. Any other ideas? Merlin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
On 01/06/06, Merlin <[EMAIL PROTECTED]> wrote: Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? Thank you for any help, Merlin Try this: ^(.*)(_a{1})(\d+).htm$ in your regex you are looking for any instance of _, a OR a sequence of numbers. I think this will search for zero or more characters, one instance of _a, then one or more numbers, then .htm. -- http://www.web-buddha.co.uk dynamic web programming from Reigate, Surrey UK (php, mysql, xhtml, css) look out for project karma, our new venture, coming soon!
[PHP] regex problem
Hi there, I do work on following regex: ^(.*)_a[0-9](.*).htm$ This should be valid for "test_a9393.htm", but not for "9393.htm" as ther is no leading _a infront of the number. Unfortunatelly this also works for the 9393.htm file. Can somebody give me a hint why the regex also is true for text that does not start with _a infront of the number? Thank you for any help, Merlin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
* Thus wrote Justin Patrin: > On Thu, 1 Jul 2004 16:41:50 -0500, Josh Close <[EMAIL PROTECTED]> wrote: > > > > I'm trying to get a simple regex to work. Here is the test script I have. > > > > #!/usr/bin/php -q > > > > > $string = "hello\nworld\n"; > > $string = preg_replace("/[^\r]\n/i","\r\n",$string); > > $string = preg_replace("/([^\r])\n/i","\\1\r\n",$string); > > You could also use forward look-aheads, but I don't remember how to do > that right now. actually look-behind: preg_replace("/(?http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
Why is it taking the char before the [^\r] also? -Josh On Thu, 1 Jul 2004 15:17:04 -0700, Justin Patrin <[EMAIL PROTECTED]> wrote: > > On Thu, 1 Jul 2004 16:41:50 -0500, Josh Close <[EMAIL PROTECTED]> wrote: > > > > I'm trying to get a simple regex to work. Here is the test script I have. > > > > #!/usr/bin/php -q > > > > > $string = "hello\nworld\n"; > > $string = preg_replace("/[^\r]\n/i","\r\n",$string); > > $string = preg_replace("/([^\r])\n/i","\\1\r\n",$string); > > You could also use forward look-aheads, but I don't remember how to do > that right now. > > > $string = addcslashes($string, "\r\n"); > > > > print $string; > > > > ?> > > > > This outputs > > > > hell\r\nworl\r\n > > > > so it's removing the char before the \n also. > > > > I just want it to replace a lone \n with \r\n > > > > -Josh > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > !DSPAM:40e48327189276451316304! > > > > > > > -- > DB_DataObject_FormBuilder - The database at your fingertips > http://pear.php.net/package/DB_DataObject_FormBuilder > > paperCrane --Justin Patrin-- > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
On Thu, 1 Jul 2004 16:41:50 -0500, Josh Close <[EMAIL PROTECTED]> wrote: > > I'm trying to get a simple regex to work. Here is the test script I have. > > #!/usr/bin/php -q > > $string = "hello\nworld\n"; > $string = preg_replace("/[^\r]\n/i","\r\n",$string); $string = preg_replace("/([^\r])\n/i","\\1\r\n",$string); You could also use forward look-aheads, but I don't remember how to do that right now. > $string = addcslashes($string, "\r\n"); > > print $string; > > ?> > > This outputs > > hell\r\nworl\r\n > > so it's removing the char before the \n also. > > I just want it to replace a lone \n with \r\n > > -Josh > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > !DSPAM:40e48327189276451316304! > > -- DB_DataObject_FormBuilder - The database at your fingertips http://pear.php.net/package/DB_DataObject_FormBuilder paperCrane --Justin Patrin-- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] regex problem
I'm trying to get a simple regex to work. Here is the test script I have. #!/usr/bin/php -q This outputs hell\r\nworl\r\n so it's removing the char before the \n also. I just want it to replace a lone \n with \r\n -Josh -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] regex problem
On 15 August 2003 12:02, Merlin wrote: > Hi there, > > I have a regex problem. > > Basicly I do not want to match: > > /dir/test/contact.html > > But I do want to match: > /test/contact.html > > I tryed this one: > ^[!dir]/(.*)/contact(.*).html$ Well, that's not going to work because the construct [!dir] means "match any single character that is ! or d or i or r. Even if you use the correct negation character, to give [^dir], that's still not going to work as it means match any ONE character which is neither d nor i nor r. I *think* what you want here is what's called a lookahead assertion, but I've never tried to use one of those so I'm not even going to attempt a suggestion; however, they are documented in the PHP manual at http://www.php.net/pcre.pattern.syntax#regexp.reference.assertions, so a good peruse through that section may set you on the way. Cheers! Mike - Mike Ford, Electronic Information Services Adviser, Learning Support Services, Learning & Information Services, JG125, James Graham Building, Leeds Metropolitan University, Beckett Park, LEEDS, LS6 3QS, United Kingdom Email: [EMAIL PROTECTED] Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] regex problem
Hi there, I have a regex problem. Basicly I do not want to match: /dir/test/contact.html But I do want to match: /test/contact.html I tryed this one: ^[!dir]/(.*)/contact(.*).html$ but it does not work and I tryed thousands of other ways plus read tutorials. Can anybody please help? Thanx in advance -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
If I wanted to remove tags from my form as well as tags, would I use a preg_match function or is their another simple funtion that does this ? -Dan - Original Message - From: "Jim Lucas" <[EMAIL PROTECTED]> To: "Daniel J. Rychlik" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Saturday, May 31, 2003 6:04 PM Subject: Re: [PHP] regex problem > Are you wanting the $_POST['nums1'] to have only numbers, -, ., #, : > > Is this what you are trying to match. if so, try this. > > if ( preg_match("/[^0-9\#\:\.\-]/", $_POST['nums1']) ) { > throw error() > } > > This will match anything that is not a number or one of the other special > chars that are in the pattern to be matched. > > Therefor, if it does find anything that is not in the pattern to be matched > it will return true and then it will enter the if statement instead of > skipping over it. > > Jim Lucas > - Original Message - > From: "Daniel J. Rychlik" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Saturday, May 31, 2003 11:46 AM > Subject: [PHP] regex problem > > > Hello,, > > I have a preg_match issue matching numbers. I am currently using > > !preg_match ('/([0-9\-\.\#:])/', $_POST['nums1'] > throw error[] > > This fails if you use something like ' asdf ' but if you use ' asdf789 ' it > passes false and does not throw an error. > This is not the obvious solution I know its a problem in my regular > expression. Should I ONLY be using > > ' /([0-9])/ ' , ? > > Thanks in advance. > Daniel > > > -- > 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
Re: [PHP] regex problem
Are you wanting the $_POST['nums1'] to have only numbers, -, ., #, : Is this what you are trying to match. if so, try this. if ( preg_match("/[^0-9\#\:\.\-]/", $_POST['nums1']) ) { throw error() } This will match anything that is not a number or one of the other special chars that are in the pattern to be matched. Therefor, if it does find anything that is not in the pattern to be matched it will return true and then it will enter the if statement instead of skipping over it. Jim Lucas - Original Message - From: "Daniel J. Rychlik" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Saturday, May 31, 2003 11:46 AM Subject: [PHP] regex problem Hello,, I have a preg_match issue matching numbers. I am currently using !preg_match ('/([0-9\-\.\#:])/', $_POST['nums1'] throw error[] This fails if you use something like ' asdf ' but if you use ' asdf789 ' it passes false and does not throw an error. This is not the obvious solution I know its a problem in my regular expression. Should I ONLY be using ' /([0-9])/ ' , ? Thanks in advance. Daniel -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] regex problem
Hello,, I have a preg_match issue matching numbers. I am currently using !preg_match ('/([0-9\-\.\#:])/', $_POST['nums1'] throw error[] This fails if you use something like ' asdf ' but if you use ' asdf789 ' it passes false and does not throw an error. This is not the obvious solution I know its a problem in my regular expression. Should I ONLY be using ' /([0-9])/ ' , ? Thanks in advance. Daniel
RE: [PHP] regex problem
> suppose there's a string > $string="I like my(hot) coffee with sugar and (milk)(PHP)"; > > I would like to get an output of all possible combinations of the sentence > with the words between brackets: > eg. > I like my hot coffee with sugar and > I like my hot coffee with sugar and milk > I like my hot coffee with sugar and milk php > I like my coffee with sugar and > I like my coffee with sugar and milk php > etc.etc. > > The number of the words between brackets can differ and they can occur > everywhere. The most important is that all combinations are returned but > the > sentence (not between brackets) should be there. Here's a solution. :) Hope it helps. You could adapt it to not use the placeholders if each word in parenthesis is unique. where 'x' is incremented //for each placeholder $a=0; $text2 = preg_replace("/\((.*)\)/Ue",'sprintf("<#%d#>",$a++)',$text); //determine how many words were matched //and what decimal number equals a binary //number of all ones and a length equal to //the number of matches $num_matches = count($matches[0]); $dec = bindec(str_repeat("1",$num_matches)); //Original text echo $text . ""; for($x=0;$x<=$dec;$x++) { $text3 = $text2; $cpy = $x; //loop equal to the number of matched words for($y=0;$y<$num_matches;$y++) { //if least significant bit is one then //replace placeholder with word from $matches //otherwise an empty string $replace = ($cpy & 1) ? $matches[1][$y] : ''; $text3 = str_replace("<#$y#>",$replace,$text3); //shift bits in $cpy one to the right $cpy = $cpy >> 1; } echo $text3 . ""; } ?> ---John W. Holmes... PHP Architect - A monthly magazine for PHP Professionals. Get your copy today. http://www.phparch.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] regex problem
> suppose there's a string > $string="I like my(hot) coffee with sugar and (milk)(PHP)"; > > I would like to get an output of all possible combinations of the sentence > with the words between brackets: > eg. > I like my hot coffee with sugar and > I like my hot coffee with sugar and milk > I like my hot coffee with sugar and milk php > I like my coffee with sugar and > I like my coffee with sugar and milk php > etc.etc. > > The number of the words between brackets can differ and they can occur > everywhere. The most important is that all combinations are returned but the > sentence (not between brackets) should be there. > > I got something like: > preg_match("/\((.*?)\)(.*)\((.*?)\)+/",$string,$regresult); > > > but the \((.*?)\) part that matches the things between brackets is fixed. > There can be a variable number of these words between brackets. How do i do > this? And how could i easily get the combinations? Can i do it all just with > preg_match or should i construct the combinations with some additional code? I'm just thinking outloud here. I'll see if I can get some time to write actual code later. 1. match all words between paranthesis and place into $match. 2. replace words with placeholders, something like <%1%>, <%2%>, etc... 3. count how many words you matched (assume 3 for this example). 4. Now, i'm thinking of making all of your sentences sort of like a binary number. Since we have three matches, we have a 3 digit binary number. To diplay all of the words in all of the combinations, we have to count from 000 to 111 where 0 is the word not showing up and one is it showing up. 000 => I like my coffee with sugar and 001 => I like my coffee with sugar and PHP 010 => I like my coffee with sugar and milk 101 => I like myhot coffee with sugar and PHP etc... 5. So if you have $z matches, you'll want to loop from $x = 0 until $x=bindec(str_repeat("1",$z)) 6 make a copy of $x... $copy = $x. 7 While ($copy != 0) 8. if($copy & 1), then replace placeholder <%$x%> with $match[$x] 9. Shift the bits in $copy one to the right. ($copy>>1) and go back to #7. 10. Once $copy is zero, replace any placeholders left with an empty string and display the sentence. 11. Go back to #5 and increment x (next for loop). I hope that's confusing enough... or not confusing.. either way. I can write some actual code if you want, but it'll be later today after work. Let me know. ---John Holmes... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] regex problem
hi, suppose there's a string $string="I like my(hot) coffee with sugar and (milk)(PHP)"; I would like to get an output of all possible combinations of the sentence with the words between brackets: eg. I like my hot coffee with sugar and I like my hot coffee with sugar and milk I like my hot coffee with sugar and milk php I like my coffee with sugar and I like my coffee with sugar and milk php etc.etc. The number of the words between brackets can differ and they can occur everywhere. The most important is that all combinations are returned but the sentence (not between brackets) should be there. I got something like: preg_match("/\((.*?)\)(.*)\((.*?)\)+/",$string,$regresult); but the \((.*?)\) part that matches the things between brackets is fixed. There can be a variable number of these words between brackets. How do i do this? And how could i easily get the combinations? Can i do it all just with preg_match or should i construct the combinations with some additional code? thanks; Simon -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Regex problem
> My solution: > ereg("^[:space:]*\*",$variable) Try ereg("^[:space:]\**$",$variable) or ereg("^[ ]*\**$",$variable) or ereg("^[[:space:]]*\**$",$variable) -- 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] Regex problem
Hi there, I am camping with a little regular expressions problem... Problem: I want to check if $variable begins with a * (star), and it doesn't matter if it starts with plenty of spaces... My solution: ereg("^[:space:]*\*",$variable) But, it doesn't seem to work with the space part... The regex: ereg("^\*",$variable) does work, but that doesn't include spaces at the start... How can I extend this one so that it doesn't matter if there are a lot of spaces at the begin? Thanks in advance, Leon Mergen