On Fri, August 19, 2005 7:03 am, Matthew Weier O'Phinney wrote: > * John Nichel <john@xxxxxxxxxxxx> : >> Richard Lynch wrote: >> > On Thu, August 18, 2005 2:50 pm, Jon wrote: >> > > preg_match_all("/Charges \s\s+ $total x (.+) /siU", $single, >> > > $from_invoice); >> > >> > I would recommend using \\s instead of \s -- While \s doesn't have >> any >> > meaning in PHP strings, so PHP just figures you must have meant >> \\s >> <snip> >> >> But in perl type regex's, the \s is a space. Without testing it, I >> don't think \\s would match what the OP was looking for (I *think* But Perl isn't going to *SEE* \\s !!! PHP is going to *EAT* \\ and make \ out of it. That's why \ is an escape character in PHP. It's also an escape character in Perl/PCRE. Some days I think PHP's escape character should have been | or something, just so this topic wouldn't come up every damn month. >> it >> would match '\s'). However, I don't understand why the OP is >> looking >> for a space " ", followed by a space "\s", followed by multiple >> spaces >> "\s+"....a \s{1,} would have done all that just fine. > > But in double quotes, \ is seen as an escape, and could be interpreted > differently. Probably the better way to do this would be: > > $pattern = '/Charges\s+' . $total . ' x ([^\s]*)/si'; > preg_match_all($pattern, $single, $from_invoice); But in single quote \ is ALSO an escape, albeit for a smaller number of characters -- 2, to be precise. I don't care if you use single or double quotes, if you want PCRE to get \s, then PHP should be using \\s inside of them. PHP "eats" a \\ and spits out \ and then PCRE "sees" \s which is what you want. This is true for both single and double quotes. -- 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