Re: Regular Expression just one step away from what I need....

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jay Blanchard wrote:
Given the string 'foo''bar''glorp' (all quotes are single quotes)I had
hoped to find a regular expression using preg_match that would return an
array containing just those words without having to go through
additional gyrations, like exploding a string to get an array. I have
only had limited luck

$theString = "'foo''bar''glorp'";
preg_match( "/\'(.*)\'/", $theString, $matches);
print_r($matches);

Array
(
    [0] => 'foo''bar''glorp'
    [1] => foo''bar''glorp
)

Of course $matches[0] has the entire string and $matches[1] contains the
returned string minus the leading and trailing single quote. I can
explode $matches[1] to get what I want, but it is an extra step and I am
sure that I have done this before but cannot locate the code in
question. I would like the results to be

Array
(
    [0] => 'foo''bar''glorp'
    [1] => foo
    [2] => bar
    [3] => glorp
)

That way I can use the $matches array without having to create another
array to hold the values. I feel as if I am really close on the regex to
do this, but cannot seem to find (after much head scratching and teeth
gnashing) the proper solution.

Much thanks!

2(-3) steps:
1. Make it _un_greedy (preg_* are greedy by default, so "/'(.*)'/U" will match foo''bar''glorp, making it ungreedy (/U modifier) would make it match just foo
2. Make it fetch _all_ matches, use preg_match_all
(3. there's no need to escape single quotes in this string :))

The following works:
preg_match_all("/'(.*)'/U", "'foo''bar''glorp'", $matches);
print_r($matches);

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux