Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чем пробел в теге <pre> отличается от пробела без такового тега

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Kave
Отправлено: 13 Августа, 2011 - 14:30:06
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Апр. 2011  


Помог: 1 раз(а)




Задача - в приложенном файле.
Решил. Код ниже.
Если убрать тег <pre>, то результата достигнуть не получается.
Т.е. пробелами можно отодвинуть текст направо. Но выровнять не удается.
Не могли бы вы прокомментировать, почему это так. По мне так пробел и есть пробел.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $filename = array("all.php", "auth.php",
  3.                    "auth.txt", "base.txt",
  4.                    "chat.html", "config.php",
  5.                    "count.txt", "count_new.txt",
  6.                    "counter.dat", "counter.php",
  7.                    "create.php", "dat.db");
  8. $i=0;
  9. $n = count($filename)-1;
  10.  
  11. for ($i=0; $i<=$n;$i++)
  12.   {
  13.                if (!isset($filename_length))
  14.                 {
  15.                 $filename_length=array($filename[$i] => strlen($filename[$i]));
  16.                 }
  17.                 else
  18.                 {
  19.                 $filename_length["$filename[$i]"]=      strlen($filename[$i]);
  20.                 }
  21.                
  22.         }
  23.        
  24.         $max_length = max ($filename_length);
  25.  
  26.        echo "<pre>";
  27.        
  28.         foreach ($filename_length as $key=>$value)
  29.         {
  30.                 for($i=0; $i<$max_length-$value;$i++)
  31.                 {
  32.                 echo '&nbsp';
  33.                 }
  34.                 echo $key."<br/>";             
  35.         }
  36.  
  37. echo "</pre>"; 
  38.  
  39. ?>
  40.  

Прикреплено изображение (Нажмите для увеличения)
CIMG0713.JPG
 
 Top
illy
Отправлено: 13 Августа, 2011 - 15:05:25
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




Ищется самое длинное слово.
В выводе, если слово короче длинного слова - к нему добавляется количество недостающих символов пробелами.

Да можно и без <pre>

<?php
echo "<table width=500>
<tr><td width=100% align=right>
dfgdfgyuiyuiyui
<br>rtrt
<br>ertruutret
<br>gghjghj
</table>;"
?>

(Отредактировано автором: 13 Августа, 2011 - 15:09:12)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Kave
Отправлено: 13 Августа, 2011 - 17:23:26
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Апр. 2011  


Помог: 1 раз(а)




Да нет, вопрос про другое. Алгоритм понятен. И я его выдержал, хотя и нерационально.
Вот если убрать тег pre, то пробелы ведь все равно подставляются. Только выравнивания по правому краю нет. А вот с pre - пожалуйста.

Вопрос - в чем тут сермяжная правда-то.
 
 Top
ams
Отправлено: 13 Августа, 2011 - 17:29:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




CODE (html):
скопировать код в буфер обмена
  1.  
  2.                       sdfhdf
  3. <pre>
  4.                       sdfhdf
  5. </pre>
  6.  
 
 Top
White
Отправлено: 13 Августа, 2011 - 17:32:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




вопрос не о php, а скорей о html:
http://htmlbook[dot]ru/html/pre
(Добавление)
да кстати, перебор в начале лучше сделать через foreach(), будет логичней и понятней

PHP:
скопировать код в буфер обмена
  1. foreach($filename as $value)  {
  2.   if (!isset($filename_length)) $filename_length = array($value=>strlen($value));
  3.   else $filename_length[$value] = strlen($value);
  4. }


-----
if(time()>1356048000) die();
 
 Top
Kave
Отправлено: 13 Августа, 2011 - 17:40:02
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Апр. 2011  


Помог: 1 раз(а)




Видимо, это называется моноширинный шрифт. Ладно. Спасибо большое.
 
 Top
White
Отправлено: 13 Августа, 2011 - 17:56:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Kave проблема во-первых в моноширинности шрифта, а во вторых, что без тега <pre> в строке имеющей более одного пробела подряд все они будут заменяться одним. например строка
"ф(10 пробелов)а" без тега <pre> интерпретируется браузером как
"ф(1 пробел)а"


-----
if(time()>1356048000) die();
 
 Top
Champion Супермодератор
Отправлено: 13 Августа, 2011 - 18:12:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




&nbsp; - есть такая классная штука если че. Она будет отображаться столько раз, сколько написана
 
 Top
ams
Отправлено: 13 Августа, 2011 - 19:54:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




PHP:
скопировать код в буфер обмена
  1.         foreach ($filename_length as $key=>$value)
  2.         {
  3.                 for($i=0; $i<$max_length-$value;$i++)
  4.                 {
  5.                 echo '&nbsp';
  6.                 }
  7.                 echo $key."<br/>";              
  8.         }
  9.  

Можно:
PHP:
скопировать код в буфер обмена
  1.  
  2.        foreach ($filename_length as $key=>$value)
  3.         {
  4.                array_fill(0,$max_length-$value,'&nbsp;')
  5.  
  6.                 echo $key."<br/>";              
  7.         }
  8.  

Вроде получиться )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB