【问题标题】:Interpreting variables but ignoring escape sequences in PHP HEREDOC解释变量但忽略 PHP HEREDOC 中的转义序列
【发布时间】:2018-02-24 22:40:51
【问题描述】:

我试图弄清楚如何使用 HEREDOC 语法来解释变量但忽略反斜杠字符。或者使用 NOWDOC 语法来解释变量。我正在尝试做的一个例子:

$title = "My title here";
$date = "Aug 12, 2017";

$latex_code = <<<LCODE
    \documentclass{article}

    \usepackage{graphicx}

    \pagestyle{head}
    \firstpageheader{
        $title
        $date
     }
LCODE;

file_put_contents("article.tex", $latex_code);

我想忽略所有斜线,但解释变量 $title 和 $date。有没有办法在不退出 HEREDOC 或 NOWDOC 块的情况下做到这一点?

【问题讨论】:

  • 你能逃脱吗?实际上,“忽略”反斜杠是什么意思?只是按字面意思解释,还是根本不包括在内?
  • 我不确定大括号内的 2 个变量是否会被翻译。建议用他们自己的一对花括号来包装你想要翻译的变量.. \firstpageheader {$title} {$date} LCODE;
  • @Don'tPanic 我正在尝试将这一切完全按原样导出到文本文件中,但会解释变量。我已经更新了我的问题以使用 file_put_contents 行来说明这一点。
  • @DuaneLortie 大括号似乎没有问题。
  • 你得到了什么输出?你期待什么输出?

标签: php escaping heredoc nowdoc


【解决方案1】:

冒着误解预期输出的风险,我认为你可以避开反斜杠。 (我假设您希望输出中包含单个反斜杠。)

$title = "My title here";
$date = "Aug 12, 2017";

$latex_code = <<<LCODE
    \\documentclass{article}

    \\usepackage{graphicx}

    \\pagestyle{head}
    \\firstpageheader{
        $title
        $date
     }
LCODE;

显然,如果您不这样做,其中一些(例如\f)将被解释为escape sequences

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2018-01-07
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2010-10-06
    相关资源
    最近更新 更多