PHP - Echo新行字符" \ n"作为单引号字符串

时间:2016-09-21 08:22:31

标签: php echo newline double-quotes single-quotes

如何回显新行字符\ n,好像它在单引号字符串中一样?

$foo = 'foo';
$nl = getStringWithNewLineCharacter();
$bar = 'bar';

echo $foo . $nl . $bar;

将输出:

foo
bar

我想要的是:

foo\nbar

(显然,我不控制getStringWithNewLineCharacter()函数的返回值。)

或者换句话说,如何强制将变量解释为单引号字符串?

修改

虽然提供的答案给出了解决方法,但这里真正的问题是如何将双引号字符串变量解释为单引号字符串变量。也许这是不可能的,我不知道。要回答这个问题,需要了解解释器如何管理字符串变量(我缺乏)。

所以:

  • "报价类型如何"一个字符串定义?
  • 是不可变的吗?
  • 有没有办法改变解释器管理字符串变量的方式?

5 个答案:

答案 0 :(得分:3)

不完全确定这是你想要的,但无论如何都要进行。

我认为你说你无法控制<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script> <script> $(document).ready(function(){ var days = <?php echo json_encode($days); ?>; var dayx = <?php echo json_encode($dayx); ?>; $('[id="dataritiroS"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var day = date.getDay(); return [days.indexOf(day) !== -1]; }}); $('[id="dataritiroN"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var dayz = date.getDay(); return [dayx.indexOf(dayz) !== -1]; }}); $('[id="dataritiro_geo"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var dayz = date.getDay(); return [dayx.indexOf(dayz) !== -1]; }}); $('[id="dataconsegna_geo"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var dayz = date.getDay(); return [dayx.indexOf(dayz) !== -1]; }}); }); </script> <script> $(document).ready(function(){ var dayconsegnas = <?php echo json_encode($days); ?>; var dayconsegnax = <?php echo json_encode($dayx); ?>; $('[id="dataconsegnaS"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var dayconsegna = date.getDay(); return [dayconsegnas.indexOf(dayconsegna) !== -1]; }}); $('[id="dataconsegnaN"]').datepicker({ minDate : 0, beforeShowDay: function(date){ var dayconsegnaz = date.getDay(); return [dayconsegnax.indexOf(dayconsegnaz) !== -1]; }}); }); </script> <script type="text/javascript"> $(document).ready(function () { $('#myModal').on('show.bs.modal', function (event) { var button = $(event.relatedTarget) // Button that triggered the modal var id_tariffa = button.data('tariffa') // Extract info from data-* attributes // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. var modal = $(this) modal.find('.hidden input').val(id_tariffa) }); $( document).on("click", "#couponyes", function () { $('[id="ritiro"]').hide('fast'); $('[id="azienda"]').show('fast'); $('[id="dataritiroN"]').hide('fast'); $('[id="dataritiroS"]').show('fast'); $('[id="dataconsegnaN"]').hide('fast'); $('[id="dataconsegnaS"]').show('fast'); $('[id="tariffaN"]').hide('fast'); $('[id="tariffaS"]').show('fast'); }); $( document).on("click", "#couponno", function () { $('[id="ritiro"]').show('fast'); $('[id="azienda"]').hide('fast'); $('[id="dataritiroN"]').show('fast'); $('[id="dataritiroS"]').hide('fast'); $('[id="dataconsegnaN"]').show('fast'); $('[id="dataconsegnaS"]').hide('fast'); $('[id="tariffaN"]').show('fast'); $('[id="tariffaS"]').hide('fast'); }); }); $('#cellulare').blur(function(evt) { evt.target.checkValidity(); }).bind('invalid', function(event) { alert('Il telefono deve contenere almeno 11 caratteri numerici'); }); </script> 的返回值,你认为它正在返回getStringWithNewLineCharacter();,即换行控制字符序列。

这只会将"\n"转换为"\n"

'\n'

结果:

<?php

$foo = 'foo';
$nl = "\n";
$bar = 'bar';

echo $foo . $nl . $bar;   // 2 lines
echo PHP_EOL;

$nl = str_replace("\n", '\n', $nl);
echo $foo . $nl . $bar;   // one line
echo PHP_EOL;

编辑:

或者如果你想让它永久化至少在这个脚本的持续时间内: -

foo
bar

foo\nbar

答案 1 :(得分:0)

你必须使用',而不是'',像这样echo '\n'而不是echo "\n"

答案 2 :(得分:0)

只需逃避反斜杠,即可中和其行为:

echo "foo\\nbar";

您可以按照上面的字面方式或字符串替换命令编写它,无论如何。结果是相同的:文字字符\n彼此相邻而不是换行符:

echo $foo . str_replace("\n", "\\n", $nl) . $bar;

或显然:

echo $foo . str_replace("\n", '\n', $nl) . $bar;

答案 3 :(得分:0)

一旦&#34; \ n&#34;字符在变量中,它已经转换为换行符。您需要将其转换回来。

$nl = preg_replace("#\n#", '\n', $nl);

答案 4 :(得分:0)

div {
  width: 200px;
  height: 100px;
  background: #333;
}

.fold-div {
  position: relative;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: ease-in-out;
}

#div1 {
  background: #d94f5c;
  animation-name: fold-top;
  transform-origin: top;
}

#div2 {
  background: #742fad;
  animation-name: fold-bottom;
  transform-origin: bottom;
}

@keyframes fold-top {
  100% {
    transform: perspective(50px) rotateX(-8deg);
    height: 0;
  }
}

@keyframes fold-bottom {
  100% {
    transform: perspective(50px) rotateX(8deg);
    height: 0;
  }
}