PCRE和PHP-转义元字符

PCRE和PHP-转义元字符,php,preg-match,pcre,Php,Preg Match,Pcre,我将继续学习PHP和PCRE。我今天的问题是: <?php $search = "Money $ money $ money..."; /*I get "invalid"*/ if(preg_match("&money \$&", $search)){ echo 'Valid <br/>'; }else{ echo 'Invalid <

我将继续学习PHP和PCRE。我今天的问题是:

<?php
        $search = "Money $ money $ money...";

        /*I get "invalid"*/
        if(preg_match("&money \$&", $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }

        /*I get "valid"*/
        if(preg_match('&money \$&', $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }
    ?>

我想当我使用双引号而不是单引号时,PHP会弄乱ASCII字符的编码,但我不完全理解为什么

有人能提供一个详细的答案吗?

不被处理(准确地说,不到双引号字符串的程度),而是按“原样”处理,但当在中指定字符串时,会有更多的特殊字符可用,并在其中解析变量

如果在双引号字符串中遇到美元符号(
$
),解析器将贪婪地获取尽可能多的标记以形成有效的变量名。因此,在代码中的双引号字符串中,
$
有一些特殊的含义,表示
$
的字符(
\
的字符也有一些特殊的含义,用于指示转义序列的开始)

要在双引号字符串中指定美元符号和反斜杠的文字,需要分别使用转义序列
\$
\\

...
// Now, you will also get "valid" here
if(preg_match("&money \\\$&", $search)) {
...
是的,顺便说一句!可能重复的