如何使用Javascript

时间:2017-08-19 15:29:22

标签: javascript php

所以我现在面临的问题如下。我试图让出发板像这样出现Departure Board 1这个板子是用laravel完成的,我现在正在尝试使用PHP,我遇到的主要问题是当我试图打破这条线时字符串的结尾显示了电路板上的BR As Shown下面你会发现HTML源代码出现的所有内容都会出现但不是在不同的行上它仍然是1行

(['EIN139 EIDW KBOS<br>EIN13T EIDW KBOS<br>EIN1GE EIDW CYYZ<br>RYR1923 EIDW 
EPKK<br>RYR35CW EIDW EGKK<br>RYR67C EIDW EGBB<br>RYR681C EIDW EGBB<br>RYR6CM 
EIDW EHAM<br>RYR73WK EIDW EGGW<br>RYR81SU EIDW LEGE<br>RYR87CJ EIDW 
EGBB<br>'])

我尝试过替换&#34;&#39; br&#39;&#34;为&#34; \ n&#34 ;;和&#34; \ n&#34 ;;但仍然没有运气。

var board = new DepartureBoard (document.getElementById ('test'), { 
rowCount: 10, letterCount: 20 }); 
board.setValue (['<?php foreach ($data as $info) {
if (strlen($info->callsign) > 6) {
    echo $info->callsign.' ';
    echo $info->origin.' ';
    echo $info->destination."<br>";
} elseif (strlen($info->callsign) < 6) {
    echo $info->callsign.'  ';
    echo $info->origin.' ';
    echo $info->destination."<br>";
} else {
    echo $info->callsign.' ';
    echo $info->origin.' ';
    echo $info->destination."<br>";
}
}?>']);

有没有我错过的东西?

      @foreach ($data as $info)
      '{{$info->callsign}} {{$info->origin}} {{$info->destination}}',
      @endforeach 

laravel中的代码,它比上面那么复杂。我不明白为什么laravel代码会自动破坏字符串,而上面的代码也没有 感谢

4 个答案:

答案 0 :(得分:0)

尝试 PHP_EOL ..

var board = new DepartureBoard (document.getElementById ('test'), { 
rowCount: 10, letterCount: 20 }); 
board.setValue (['<?php foreach ($data as $info) {
if (strlen($info->callsign) > 6) {
    echo $info->callsign.' ';
    echo $info->origin.' ';
    echo $info->destination.PHP_EOL;
} elseif (strlen($info->callsign) < 6) {
    echo $info->callsign.'  ';
    echo $info->origin.' ';
    echo $info->destination.PHP_EOL;
} else {
    echo $info->callsign.' ';
    echo $info->origin.' ';
    echo $info->destination.PHP_EOL;
}
}?>']);

答案 1 :(得分:0)

我猜这是一个textarea或类似的东西 要在这些元素中制作线条,您需要使用\n而不是html。

此外,如果模板语言变得简单(纯PHP会更容易),为什么不使用它呢?

答案 2 :(得分:0)

  

Laravel Blade Engine

使用{!! '<br>' !!}代替{{ '<br>' }}

Laravel会自动转义常规回声支撑{{}}内的字符。

小心:这可以是XSS的入口点。

答案 3 :(得分:0)

因为在你的laravel版本中你添加了多个数组元素,所以在你的原生php版本中,你将所有内容都放在同一个数组元素中。

此:

@foreach ($data as $info)
  '{{$info->callsign}} {{$info->origin}} {{$info->destination}}',
@endforeach 

会产生类似

的东西
'BRKS SKDFK SDFSDF', 'SDFKE SDFSk SDFSDF', 'SDFDSF EGFAS SDFSE'

虽然你的其他版本会产生这个

'BRKS SKDFK SDFSDF SDFKE SDFSk SDFSDF SDFDSF EGFAS SDFSE'

更改代码,以便将行拆分为不同的数组元素。

board.setValue ([<?php foreach ($data as $info) {
echo "'";
 // echo actual line data here
echo "',";
?>]);

请注意,每次迭代都会回显单引号。请注意,这不是最佳方式,因为您很可能最终得到一个逗号。您可以使用php的array_map来创建每一行,然后对结果进行json_encode,并将其回显到所需的位置。

$lineFunction = function($info) {
  $line = "";
  if (strlen($info->callsign) > 6) {
      $line .= $info->callsign.' '.
               $info->origin.' '.
               $info->destination;
  } elseif (strlen($info->callsign) < 6) {
      $line .= $info->callsign.'  '.
               $info->origin.' '.
               $info->destination;
  } else {
      $line .= $info->callsign.' '.
               $info->origin.' '.
               $info->destination;
  }
  return $line;
};

$lines = array_map($lineFunction, $data);
?>
board.setValue (<?php echo json_encode($lines);?>);