【问题标题】:Combining PHP Heredoc with Javascript Template literals [duplicate]将 PHP Heredoc 与 Javascript 模板文字相结合 [重复]
【发布时间】:2020-03-30 09:00:06
【问题描述】:

我正在尝试在 PHP HEREDOC 段中使用模板文字。这会导致模板中使用的美元符号出现问题:

echo <<<JS
   console.error(`Source type ${source} not supported`);
JS;

给我以下错误:

PHP Notice:  Undefined variable: source in example.php on line 2

是否可以避免 PHP 将美元符号解析为变量?

【问题讨论】:

  • 使用\$ 屏蔽它(或使用单引号)
  • @ChrisG,用 \ 掩蔽正是我想要的,谢谢!另一个问题与heredoc无关,但有类似的解决方案。
  • 只要其他问题的答案提供解决该问题所需的知识,它不必是一个精确重复项。文档说 PHP 的 heredoc 的行为就像一个双引号字符串,所以它非常适用。

标签: javascript php heredoc template-literals


【解决方案1】:

使用 Nowdoc 代替 heredoc

$myline = 'add this line';
$input = <<<'JS'
   console.error(`Source type ${source} not supported`);
   console.log(`%s`);
JS;
$output = sprintf($input,$myline);
echo $output

【讨论】:

  • 这解决了我对这行特定代码的问题,但我也想保留heredoc功能!
  • 您可以使用 nowdoc 生成sprintf 兼容字符串,然后根据您的需要进行格式化。
  • 用 sprintf 更新答案
【解决方案2】:

正如@ChrisG 评论中所述,只需添加反斜杠即可解决问题:

echo <<<JS
   console.error(`Source type \${source} not supported`);
JS;

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多