проблема текстовой области jquery - PullRequest
0 голосов
/ 09 марта 2010

у меня одна текстовая область

        <textarea name="message" id="message" class="text_field" style="height:200px; width:500px"></textarea>

если я печатаю данные в текстовой области, как это

        hello
        this is my test message

        bye
        'abc'

я использую следующую инструкцию для получения данных из текстовой области

     var message = $('#message').attr('value');

я передаю это значение в другой php-файл, например

      var data = {message:message};
 $.ajax({
 type: "POST",
 url: "show.php",
 data: data,
 etc

когда я вижу данные в post-value firebug в show, я в точности вводю данные (с новыми строками, пробелами и т. Д.) и в php файле

          $message=$_POST['message'];

           $Content = file_get_contents($temp_page);
           $Content = str_replace('%%a%%', $message, $Content);

теперь, когда я использую

             echo $Content

Я получаю весь текст в одной строке, не точно, я набираю текстовую область ...

          hello this is my test message bye 'abc'

Спасибо

Ответы [ 5 ]

2 голосов
/ 09 марта 2010

Это связано с тем, что браузеры не печатают переводы строк вне текстовых областей или других элементов, которые определены для вывода на печать как есть, например, <pre>.

Вам нужно использовать echo nl2br($Content); для замены символов новой строки <br /> элементами, что эквивалентно символу новой строки в (x) HTML.

1 голос
/ 09 марта 2010

Если вы откликаетесь прямо в браузер, попробуйте просмотреть источник страницы. Вы можете обнаружить, что браузер интерпретирует текст как HTML, и в этом случае он разрушит все пробелы и переводы строки. Теоретически просмотр исходного кода должен показать вам, что вы ввели, с новыми строками, дополнительным пробелом и т. Д.

0 голосов
/ 09 марта 2010

Может быть, вы можете попробовать:

nl2br($Content);
0 голосов
/ 09 марта 2010

Если вы щелкнете правой кнопкой мыши и нажмете «Просмотреть исходный код» (или какой-либо близкий аналог), вы должны увидеть правильно отформатированный текст. Это связано с тем, как работает HTML. Даже если вы напишите следующий HTML:

hello
this is my test message

bye
'abc'

Выход будет встроенным. Вы должны написать
после каждой строки или обернуть текст в тег

. 
0 голосов
/ 09 марта 2010

Подумайте о том, что произойдет, если вы просто набрали какой-нибудь источник HTML, например так:

<p>
  Hello there.
     This is 
  my

       HTML

  source, and I hope

                     you

      like it.
</p>

Как это выглядит? Правильно & mdash; браузер будет обрабатывать все эти символы новой строки как простые пробелы и сворачивать их все, поскольку он выделяет непробельные символы.

Когда вы выгружаете содержимое текстовой области (кстати, получите значение с помощью $('#whatever').val()), вы делаете то же самое. Если вы хотите сохранить форматирование, это может быть головной болью. Вы можете попробовать поместить его в блок <pre>, или вам может понадобиться явно найти переводы строки и преобразовать их в <br> элементов.

edit: См. Ответ @ Tatu для нужной вам функции php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...