PHP为什么要删除$signs

PHP为什么要删除$signs,php,regex,preg-match,spintax,Php,Regex,Preg Match,Spintax,嗨,我在PHP中使用这个函数来创建一些旋转内容(使用spintax)。但是,如果spintax包含$(美元符号),它们将在输出中删除 function spintext($s){ preg_match('#\{(.+?)\}#is',$s,$m); if(empty($m)) return $s; $t = $m[1]; if(strpos($t,'{')!==false){ $t = subs

嗨,我在PHP中使用这个函数来创建一些旋转内容(使用spintax)。但是,如果spintax包含$(美元符号),它们将在输出中删除

    function spintext($s){

        preg_match('#\{(.+?)\}#is',$s,$m);
        if(empty($m)) return $s;

        $t = $m[1];

        if(strpos($t,'{')!==false){
            $t = substr($t, strrpos($t,'{') + 1);
        }

        $parts = explode("|", $t);
        $s = preg_replace("+\{".preg_quote($t)."\}+is", $parts[array_rand($parts)], $s, 1);

        return spintext($s);
    }

$out = spintext("Spinning a dollar sign: {$200|$400|$300}");
echo $out;
结果:

Spinning a dollar sign: 0
有人能告诉我为什么会这样吗?
此外,您是否可以看到此代码的效率可能会得到提高以加快旋转过程并减少内存使用的任何方面?

当您在字符串周围使用双引号时:

$out = spintext("Spinning a dollar sign: {$200|$400|$300}");
在输出字符串之前,PHP将解析并尝试用变量内容替换它们

(此外,这会引发错误,因为变量不应以数字开头。)

您需要使用单引号(文字)

或者避开美元符号
\$

$out = spintext("Spinning a dollar sign: {\$200|\$400|\$300}");

在字符串周围使用双引号时:

$out = spintext("Spinning a dollar sign: {$200|$400|$300}");
在输出字符串之前,PHP将解析并尝试用变量内容替换它们

(此外,这会引发错误,因为变量不应以数字开头。)

您需要使用单引号(文字)

或者避开美元符号
\$

$out = spintext("Spinning a dollar sign: {\$200|\$400|\$300}");

dolar符号是变量的一部分,如果要在输出中保留它,可以使用单引号或在$sign\$dolar符号是变量的一部分之前转义,如果要在输出中保留它,可以使用单引号或在$sign\$之前转义谢谢指针。我将文本指定为变量的位置如何,例如:
$texttospin=“旋转美元符号:{\$200}\$400}\$300}”$out=spintext($texttospin)怎么办?不知道你的意思谢谢你的指点。我将文本指定为变量的位置如何,例如:
$texttospin=“旋转美元符号:{\$200}\$400}\$300}”$out=spintext($texttospin)怎么办?不知道你的意思