【问题标题】:String with \n causing following variable errors [closed]带有 \n 的字符串导致以下变量错误[关闭]
【发布时间】:2018-08-24 16:26:13
【问题描述】:

我有一个变量,其中包含\n、空格和其他符号,并且在我的代码中导致错误(注意:未定义的偏移量:0)。 我正在尝试通过 API 更新我的 MikroTik 路由器上的终端注释,但是当注释变量有多行和 \n 等时,它会导致其余代码不起作用并给我错误。 我该如何解决这个问题?

我的代码:

$config['routeros']['note'] = "\
    \n ------------------------------------------------------------\
    \n Warning! This device is secured by\
    \n   _____                          ____                     _ \
    \n  / ____|                        |  _ \\                   | |\
    \n | |  __  _ __  ___   ___  _ __  | |_) |  __ _  _ __    __| |\
    \n | | |_ || '__|/ _ \\ / _ \\| '_ \\ |  _ <  / _` || '_ \\  / _` |\
    \n | |__| || |  |  __/|  __/| | | || |_) || (_| || | | || (_| |\
    \n  \\_____||_|   \\___| \\___||_| |_||____/  \\__,_||_| |_| \\__,_|\
    \n                                              N E T W O R K S\
    \n ------------------------------------------------------------\
    \n  \
    \n Unauthorised access is prohibited and shall render the user \
    \n liable to criminal and/or civil prosecution.";

PHP 文件的代码片段

print_r($config) 的输出;

【问题讨论】:

  • 这段摘录没有语法错误。尽管如此,为什么不使用 HEREDOC?
  • 那是什么,我该怎么做?
  • "php manual strings heredoc"。您应该就具体问题进行更多解释。没有上下文,未定义的索引错误及其与该字符串的关系是不清楚的。也不清楚为什么它包含真正的换行符的额外转义。 是怎么得出这个结论的?
  • 错误来自note变量后面的变量。在我看来,ASCII 字符似乎在结束之前以某种方式关闭了变量字符串引号,然后导致我的代码的其余变量出错
  • 如果后续行看起来相关,您应该include them。否则,恐怕这可能会无人回答。

标签: php api mikrotik


【解决方案1】:

使用heredoc。示例:

config['routeros']['note'] = <<< END
    ------------------------------------------------------------
    Warning! This device is secured by\
       _____                          ____                     _ 
      / ____|                        |  _ \\                   | |
     | |  __  _ __  ___   ___  _ __  | |_) |  __ _  _ __    __| |\
     | | |_ || '__|/ _ \\ / _ \\| '_ \\ |  _ <  / _` || '_ \\  / _` |
     | |__| || |  |  __/|  __/| | | || |_) || (_| || | | || (_| |\
      \\_____||_|   \\___| \\___||_| |_||____/  \\__,_||_| |_| \\__,_|
                                                  N E T W O R K S
    ------------------------------------------------------------
    Unauthorised access is prohibited and shall render the user
    liable to criminal and/or civil prosecution.
END;

【讨论】:

  • 解析错误:语法错误,第 57 行 /opt/WispManager/config.php 中的意外 '
  • 搞定了,你把=丢了
  • 不幸的是,这没有任何区别。我仍然遇到同样的错误
  • 抱歉,打字太快了。我同意错误似乎与变量的设置无关。
  • 我似乎无法通过这种方式获得任何工作
【解决方案2】:

由于没有人想要解决它,所以我无法解决这个问题,所以我现在想出了一个解决方案。我创建了一个检查路由器上文件的功能,如果存在则跳过,但如果路由器上没有sys-note.txt 文件,它将启用 ftp 服务(如果禁用),然后上传sys-note.txt 文件我的服务器连接到路由器,然后仅在开始时禁用 ftp 时再次禁用它。

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 2015-06-26
    • 1970-01-01
    • 2011-05-15
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多