Проблемы с форматированием пробелов в HTML - PullRequest
1 голос
/ 17 ноября 2011

Мои выбранные данные содержат (может быть длинной строкой и пробелом в ней),

пример:

$row['desc'] = 'abcd       ABCD   1234 more..  "

<td><?=$row['desc']?></td>

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

В FireBug я вижу то же форматирование данных, что и в базе данных.

[*] Чтобы сохранить формат, подобный выбранным данным, я попытался

  $display_desc = array(" ","&nbsp;",$row['desc'])

и моя $row['desc'] - это динамическая строка

Но если мне нравится, у меня возникнет проблема, когда длинная строка $row['desc'] не обернет.

Кто-нибудь знает, чтопроблема в этом случае?

Спасибо

РЕДАКТИРОВАТЬ Пример в HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test Document</title>
</head>

<body>
<table border="1">
  <tr>
    <td>Short data</td>
  <td style="WORD-BREAK:BREAK-ALL;">
  long data      long data     long data     long data     long data     long data     long data    long data    long data  long data  long data      long data     long data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data 
  </td>
    <td style="WORD-BREAK:BREAK-ALL;">
  long data      long data     long data     long data     long data     long data     long data    long data    long data  long data  long data      long data     long data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data data     long data     long data     long data     long data    long data    long data  long data 
  </td>

</table>
</body>
</html>

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

Обертывание в тег <pre>, затем примените несколько CSS: Как мне обернуть текст в предварительный тег?

pre {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

Демо с вашим примером HTML: http://jsfiddle.net/B98jc/

1 голос
/ 17 ноября 2011

Браузеры превращают два или более обычных пробела в один пробел.

Использование неразрывного пробела (&nbsp;) вместо этого говорит браузеру визуализировать все пробельные символы.Если у вас есть проблемы с переносом, вы можете контролировать это с помощью CSS.Но помните, что браузер хочет разбить строку на вещи, которые могут действительно сломаться, например, обычные пробелы.Возможно, вам придется вставить обычный пробел посреди этих неразрывных пробелов (или использовать какой-то причудливый JavaScript) для управления переносом.

С учетом вышесказанного кажется, что вы хотите построить структуру таблицы, котораяимитирует то, что исходит из базы данных.Помещение всей строки из вашей записи $row в одну ячейку таблицы на самом деле не решает эту проблему.Ваши данные выглядят так, как будто они имеют формат с фиксированной шириной, поэтому вам может потребоваться циклически проходить по каждой строке данных и брать первые x символов для первого столбца, а затем следующие x символовдля второго столбца и т. д.

0 голосов
/ 18 ноября 2011

Почему бы вам просто не обернуть вывод в теги <pre>? Это сохранит существующее форматирование.

Есть ли проблема с этим маршрутом? Или вам нужно заменить пробелы?

...