如何在PHP的Heredoc中转义变量名


How to escape variable name in PHP's Heredoc?

我有一个变量$foo里面有一些id,我想在PHP的Heredoc字符串中使用它,如下所示:

$text = <<<TEXT
  <div id="$foo_bar"></div>
TEXT;

明显的问题是 PHP 将 Heredoc 中的变量解析为$foo_bar当然不存在。我想要的是解析$foo变量,"_bar"应该被视为常规文本。

是否可以使用某种转义字符或无法实现?

PS:是的,我知道我可以使用带引号的字符串而不是 Heredoc,但我必须使用 Heredoc(我有大量带有引号的文本和代码等)。

在变量周围加上大括号,就像在带引号的字符串中一样。

$text = <<<TEXT
  <div id="{$foo}_bar"></div>
TEXT;

改用此代码强制使用 $foo .

$text = <<<TEXT
  <div id="{$foo}_bar"></div>
TEXT;

大括号强制内容为变量。

或者,您可以在 HEREDOC 之前附加"_bar"。

$foo = $foo . "_bar";
$text = <<<TEXT
  <div id="$foo"></div>
TEXT;