Как обрабатывать новые строки в Javascript? (из PHP)

У меня такой код:

<?php echo '<script type="text/javascript">'; echo 'var out="'.$txt.'";'; echo '</script>'; ?> 

Где $ txt – это переменная PHP, которая может содержать новые строки следующим образом:

 line1 line2 hello world 

Который закончится следующим образом:

 var out="line1 line2 hello world"; 

Конечно, это приведет к ошибке Javascript.

Каков наилучший способ справиться с этим? Вывод переменной будет использоваться в текстовом поле HTML, поэтому я не думаю, что он может быть проанализирован в

Solutions Collecting From Web of "Как обрабатывать новые строки в Javascript? (из PHP)"

 $txt = str_replace( array( "\n", "\r" ), array( "\\n", "\\r" ), $txt ); 

должен заменить новые строки. Не делайте этого так .

Это наивная реализация экранирования строк для JavaScript . Поскольку вы на самом деле пытаетесь отформатировать строку для использования в JavaScript, гораздо лучшим решением будет использование json_encode :

 $txt = json_encode($txt); echo "<script>var out={$txt};</script>"; 

json_encode будет корректно удалять специальные символы в строках, такие как кавычки, вкладки, фиды форм и другие специальные символы Unicode. Он также выполнит все правильное экранирование для преобразования объектов, массивов, чисел и булевых элементов.

вы можете добавить \ в конец строки, чтобы создать многострочную строку

 var out="line1 \ line2 hello world"; 

Вы можете использовать str_replace для преобразования разрывов строк в другой символ (в данном случае, возможно, пробел, но это зависит от того, как вы хотите, чтобы результат отображался)

 $out = str_replace("\n", '\n', $in); 
 $content = str_replace( "\\n", "\\\\\\n", $content ); 

Результат:

 var a = "Hello \ World" 

Большинство из них не работают для меня. Обычно я использую json_encode как

  <?php $MyVar = json_encode($MyVar); ?> <javascript language='javascript'> MyVar = <?php echo $MyVar; ?> 

Но для быстрого исправления вы можете просто сломать такую ​​строку: обратите внимание на двойные кавычки.

  <?php $MyVar = "line one here then line two here finally line five here"; //** OR $MyVar = $MyVarA . " " . $MyVarB; ?> <HTML> <HEAD> <javascript language='javascript'> Myvar = "<?php echo $MyVar; ?>"; 

, , ,

Я пробовал это, и он работал хорошо.

 <?php echo '<script type="text/javascript">'; $txt = "line1 \\n line2 hello world"; echo 'var out="'.$txt.'";'; echo '</script>'; ?> 

Я использую PHP 5.3