> -----Original Message-----
> From: John W. Holmes [mailto:[EMAIL PROTECTED]]
> Sent: 24 December 2002 00:44
> 
> I don't know. I just got that from reading the manual. The very first
> user comment on the preg_match page.

Sorry, misread this before and took the explanation below as John replying to 
chrisbolt -- but actually, it's John *quoting* chrisbolt, isn't it?  In which case, 
I'll chip in further with:

> ----
> chrisbolt at home dot com
> 12-Mar-2000 03:23 
>  
> If you want to use some of PHP's special characters in your 
> expression,
> such as $, you must escape it twice. For example:

$ is both a PHP special character in double-quoted strings, and a special character in 
preg pattern matches (meaning "start of string or line") -- so it first has to be 
escaped for preg, giving \$, and then the \ and the $ each have to be escaped for the 
PHP double-quoted string giving "\\\$".

Basically, if you put your pattern in a double-quoted string, every time you want to 
pass a \ to preg (say as an escape for a special character such as ., or as part of a 
character class such as \d) you have to assess whether it needs escaping for PHP, 
leading to a double backslash in the PHP string.  The safest strategy is just to 
double it every time, as this will always be de-escaped by PHP to a single \ in the 
string which is then passed to preg.

If you use single-quoted strings for your preg pattern, you don't get this problem as 
the only character that needs escaping for PHP is then the single quote itself!

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

Reply via email to