Как обрезать нежелательные новые строки / переносы строк из переменной PHP? - PullRequest
1 голос
/ 23 апреля 2011

Я получаю сообщение об ошибке, в то время как я регистрирую переменную php в элемент HTML формы через JavaScript.Например, если в моем коде есть переменная php $edu_notes, и я присваиваю значение этой переменной элементу HTML, который является

<textarea name="1_1_50" id="1_1_50" ></textarea>

, и мой код JavaScript:

document.getElementById('1_1_50').value = "<?php echo $edu_notes; ?>";

значение $edu_notes взято из профиля linkedin:

"First Text Line

Second Text Line"

между первой строкой текста и второй строкой текста есть пробел.А javascript выдает ошибку, которая

unterminated string literal
"First Text line

Javascript не получает полное значение в виде строки из-за пустой строки.Я пробовал некоторые функции PHP, такие как filter_var(),nl2br(),trim(), но не решил эту проблему.Я также пытался набрать приведение через (string) $edu_notes.

В моем исходном файле, что я получаю, смотрите скриншот ниже:

enter image description here

Я делаю этотип функциональности, потому что все элементы формы происходят из базы данных динамически.

Ответы [ 4 ]

2 голосов
/ 23 апреля 2011

Попробуйте

  document.getElementById('1_1_50').value =   '<?php echo str_replace(array( "\r", "\n", "%0a", "%0d"), "' + \"\\r\\n \"  + '", $edu_notes); ?>'

, который заменит любые новые строки в строке с JS-friendly возвращениями.

1 голос
/ 23 апреля 2011
document.getElementById('1_1_50').value =
    '<?php echo str_replace("\n", "\\n", $edu_notes) ?>';
1 голос
/ 23 апреля 2011

Это потому, что он должен быть установлен на одной строке. В PHP замените символ новой строки литералом \n, и он должен работать нормально. Если это однострочное текстовое поле, замените новую строку пробелом.

<?php echo str_replace("\n", " ", $edu_notes); ?>

или

<?php echo str_replace("\n", "\\n", $edu_notes); ?>
0 голосов
/ 23 апреля 2011

Попробуйте использовать многострочную строковую конструкцию в javascript.

Например.

  var myStr = "line one \
line two";

Чтобы воссоздать это в своем php-коде, замените новые строки на '\' и новую строку: -

"First Text Line

Second Text Line"

на

"First Text Line \

Second Text Line"

Это можно сделать в php, используя preg_replace: -

$edu_notes = preg_replace( '#\n#', '\\\n', $edu_notes );

Надеюсь, это поможет.

...