RE: [PHP] Unable to match dollar sign in preg_match
| From: | Ford, Mike [LSS] | Date: | Tue, 24 Dec 2002 12:12:00 +0000 |
| Subject: | RE: [PHP] Unable to match dollar sign in preg_match | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-129278@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: John W. Holmes [mailto:holmes072000@charter.net]
> 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: m.ford@lmu.ac.uk
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211