0

phpのstr_replace関数を使用して、一部のテキストを置き換えています。以下の例。

str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);

str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);

最初のケースではテキストを置き換えますが、2番目のケースでは置き換えません。2つの違いは何ですか?

4

2 に答える 2

1

と の間には違い'があり"ます。\単一引用符で囲まれた文字列内を取り除きます。

EDIT:明確にするために、二重引用符で囲まれた文字列はいくつかの展開を行います(リンクを参照)が、一重引用符で囲まれた文字列はそうではありません。二重引用符で囲まれた文字列内$ではエスケープする必要がありますが、単一引用符で囲まれた文字列ではエスケープする必要はありません。\後者の場合、文字どおり\$.

于 2010-06-02T11:20:53.780 に答える
0

ドル記号と中括弧は、二重引用符で囲まれた文字列内では特別な意味を持ちます。$変数のコンテンツを直接文字列に入れるために使用されます。{}PHP変数の意味があいまいな場合に備えて、PHP変数をラップするために使用されます。

たとえば"$hello"、変数の内容を$hello文字列に"{$hell}o"入れますが、変数の内容を文字列に入れ$hell、その後にリテラル文字oを続けます。

一重引用符にはこれがまったくありません(簡単にするために、より複雑な文字列を引用する場合は一般的に推奨されます)。したがって'{$hell}o'、実際の文字を含む文字列になります{$hell}o

置き換えようとしている正確な文字列が少し不明確です。リテラル{x+$v}{x-$v}thenに置き換えるには、次を使用します。

str_replace('{x+$v}', '{x-$v}', $this->introtext);
于 2010-06-02T11:33:41.047 に答える