【问题标题】:How do I get PHP to print the unescaped contents of a variable?如何让 PHP 打印变量的未转义内容?
【发布时间】:2014-06-30 18:49:21
【问题描述】:

如果我有一个包含换行符的 PHP 变量,如何打印或回显该变量的内容,以便换行符显示为反斜杠后跟 n?

为了详细说明,假设我有以下内容:

$test = "one\ntwo"

当我执行echo $test 时,我得到one two

我真正想要的是one\ntwo

我还应该澄清一下,我自己实际上并没有指定变量(如果我这样做了,我可以只使用单引号)。我正在处理的是一个 $_POST 变量。

【问题讨论】:

  • 你的意思是\n(或\r\n)?你的目标是什么? (注:我没有给否定的“问题”投票和“答案”,是另一个人)
  • 请看详细说明。
  • 但是你能告诉我这样做的真正目的是什么(你想要达到什么目的),为什么还没有多大意义。谢谢。
  • 基本上,用户正在输入可能包含多行的输入。该输入通过 system() 传递给 bash 脚本,然后再次传递给 perl 脚本。 perl 脚本需要将换行符视为换行符(即作为文字 \n)。
  • 老实说,这似乎不是一个安全的应用程序,可能有更安全的方法来执行此过程。当我说“安全”时,不仅是数据安全和服务器,而且代码将运行而不会失败。你能听懂我说话吗?也许您应该重新格式化您的问题以将重点放在目标上,即将“字符串”发送到“命令”。明白了吗?

标签: php escaping


【解决方案1】:

使用单引号:

$test = 'one\ntwo';
echo $test;

或者如果它来自其他地方(你说$_POST)。注意搜索中的双引号和替换中的单引号:

$test = "one\ntwo";
$test = str_replace("\n", '\n', $test);
echo $test;

one\ntwo

【讨论】:

  • 我应该在前面提到我自己并没有实际指定变量;这是我正在处理的 $_POST 变量。
  • 已编辑。不知道你在这里追求什么。问题中的一些解释会有所帮助,并且可能还有其他更有意义的东西。
  • 谢谢。目前这可行,但也许我以后会找到更好的方法。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 2011-01-23
  • 2018-08-15
  • 2020-06-24
  • 1970-01-01
  • 2016-11-11
  • 2014-08-06
  • 1970-01-01
相关资源
最近更新 更多