PHP вставить несколько пробелов - PullRequest
2 голосов
/ 01 апреля 2011

У меня есть некоторые данные, которые нужно очистить в формате фиксированной длины. Я использую PHP, чтобы извлечь данные, скрыть их и вернуть обратно, но это не работает, как планировалось. В каждой части в середине данных есть определенная точка, где должны быть пробелы, чтобы увеличить длину до нужного количества символов. Код, который я использую для этого:

while ($row = mysql_fetch_array($databasetable)) {
    $key = $row['KEY'];
    $strlength = strlen($key);
    while ($strlength < 33) {
        $array = explode(' TA',$key);
        $key = $array[0] . '  TA' . $array[1];
        $strlength++;
    }
}

Он берет 'TA' и добавляет два пробела перед ним, промывает и повторяет, пока общая длина не станет 33, однако когда я вывожу значение, он просто возвращает один пробел. Самое смешное, что, несмотря на то, что он отображает один пробел, он возвращает значение 33, даже если он не отображает 33 символа.

Любая помощь в выяснении этого будет принята с благодарностью.

Ответы [ 7 ]

4 голосов
/ 01 апреля 2011

В HTML будут отфильтрованы лишние пробелы.

Чтобы вывести дополнительные пробелы, используйте '&nbsp;' вместо ' '.

3 голосов
/ 01 апреля 2011

@ TVK - правильно, HTML игнорирует пробелы в несколько пробелов - он превратит его в один пробел.

В дополнение к его решению вы можете использовать инструкцию CSS white-space: pre для сохранения пробелов.

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

Помните, что при выполнении вывода в веб-браузер он будет интерпретировать его как HTML; и в HTML несколько пробелов отображаются как один .

Можно использовать функцию var_dump(), особенно в сочетании с расширением Xdebug , чтобы лучше понять ваши данные - - или отобразить его в виде текста, отправив текстовый тип содержимого.


Кстати: если вы хотите убедиться, что строка содержит определенное количество символов, вы, вероятно, захотите взглянуть на str_pad()

1 голос
/ 01 апреля 2011

Самые простые варианты для вас:

  • Оберните ваш вывод в
    теги 
  • заменить каждое поле на & nbsp;
0 голосов
/ 01 апреля 2011

Вы можете сказать браузеру, что текст предварительно отформатирован

  this text will be displayed as it is formatted
     spaces should all appear.
         new lines will also be apparent
0 голосов
/ 01 апреля 2011

Если вы визуализируете HTML, последовательные пробелы будут игнорироваться. Если вы хотите форсировать их рендеринг, попробуйте использовать &nbsp;

Обычно использование нескольких неразрывных пробелов один за другим является плохой идеей и может не принести желаемого результата, если вы не используете моноширинный шрифт. Если вы хотите переместить какой-либо фрагмент текста в определенную позицию на вашей странице, рассмотрите возможность использования поля

0 голосов
/ 01 апреля 2011

Вы смотрели в str_pad? что-то вроде:

str_pad ( 'mystring' , 33 , '  TA' , STR_PAD_LEFT );
...