Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Движок - обнаружил странный баг  (Прочитано 10518 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« : 12-08-2004 15:18 » 

Онаружен странный баг при работе с статьями.

Я вставляю тег <PRE> который у нас как-то криво работает - после чего копирую полученный текст страницы в отдельный файл test.html и он отображается по другому...

Вот пример такого отображения:

1 . В статье на реальном сайте так:

Код:
<PRE> If x=0 Then
<br>
  MsgBox “x = 0”
<br>
Else If x<0 Then
<br>
  MsgBox “x < 0”
<br>
Else If x > 0 Then
<br>
  MsgBox “x > 0”
<br>
End If
<br>
End If
<br>
End If
<br>
</PRE>


<br>
Но такая запись является очень громоздкой, и при большом количестве условий и выполняемого кода, трудно читаемым… Даю гарантию, что через полгода, после написания кода с такой конструкции, даже программист, написавший программу, при необходимости внесения изменения в код, потратит немало времени и сил на разбор такой конструкции…

Отображается неверно - т.е. Код виден как

Код:
 If x=0 Then
  MsgBox “x = 0”
Else If x<0 Then
  MsgBox “x < 0”
Else If x > 0 Then
  MsgBox “x > 0”
End If
End If
End If

А следующая строка не форматируется и уезжает вправо
Цитата




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

Однако тот же код статьи скопированный с View Source и вставленный в HTML файл виден так:

Цитата

 If x=0 Then

  MsgBox “x = 0”

Else If x<0 Then

  MsgBox “x < 0”

Else If x > 0 Then

  MsgBox “x > 0”

End If

End If

End If





Но такая запись является очень громоздкой, и при большом количестве условий и выполняемого кода, трудно читаемым… Даю гарантию, что через полгода, после


Т.е. правильно отрабатывается тег <PRE> в котором появляются ненужные переводы строки. Далее, самое хреновое, все выравнивается...
КАК ТАКОЕ МОЖЕТ БЫТЬ???
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 12-08-2004 15:29 » 

Баг исправлен.
Ошибка была в работе замены символов перевода строки \r\n на <BR>

Кроме того интересная деталь - после убирания кода

Цитата

if($f) {
       $v=preg_replace('/&/','&amp;',$v);
       $v=preg_replace('/</','&lt;',$v);
       $v=preg_replace('/>/','&gt;',$v);
       $v=preg_replace('/"/','&quot;',$v);
       $a[$n]=$v;


перестал балдеть вывод и ошибок при наличии значков > < больше нету

RXL просьба - ты писал этот кусок - что-то тут не то - посмотри пожалуйста!!!!
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 12-08-2004 19:15 » 

Гром, обязательно посмотрю. Не забывай, что этот код писался под старый движок сайта - надо искать отличия.

=================
Заглянул в десяток статей (свежих, не очень и самых старых) и нигде не нашел тега <PRE> - вместо него стоит <CODE>. Здесь и растут ноги у отступов: PRE - значит "предварительно сформатированный", а CODE этого делать и не обязан, он всего лишь переходит на моноширинный шрифт и более мягко относится к символам, зарезервированным для тегов.

Кстати, настоятельно рекомендую посмотреть в старые статьи - как раз в них то сейчас и пропадают символы < >. Вспомни вид кода:
Код:
#include
#include
#include
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #3 : 12-08-2004 22:09 » 

RXL, нет нет - тут код <PRE> не причем. Я нашел наконец то баг, который мешал нам работать с этим тегом - это была моя замена \r\n на <BR> я там один символ забывал и менялась вся картина.

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

Я счас убду работать над нормальным отображением <PRE> т.е. сделаю для него стиль, есть к этому делу вопрос.

Как запретить замену в str_replace \r\n на <BR>  между найденными <PRE></PRE> т.е. алгоритмиески я это сделать могу - но это целый кусок кода парсинга, а наверняка можно сделать проще...

Подскажешь?
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 13-08-2004 07:42 » 

Гром, таки надо устаканить формат принимаемых статей - без этого будут постоянные заплатки.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #5 : 13-08-2004 07:56 » 

Формат HTML без <BR> или с <BR> счас как раз решается.

Код выделяется - как пока я не решил. Тут проблема вот какая:

Если оставить как есть и вставлять <BR> автоматически, то не понятно мне пока как не вставлять его между <PRE></PRE>

Кроме того - я пока проверяю вид отображения тега <PRE> т.е. есть ли возможность как-то ограничить его ширину, дабы он вписывался в имеющиеся места. Или все же оставить <PRE> в покое и автоматом заменять пробелы в началае строк на &nbsp;

Короче говоря - проблема одна, как побольше автоматизировать и сделать поудобнее, получше + отображение кода.

В остальном никаких проблем нет.
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-08-2004 08:16 » new

Гром, я что-то не врублюсь - зачем оставлять \r\n внутри PRE? Там нормально отрабатываются BR.

Вывались в аську или irc - так я думаю мы быстрее поймем что нужно делать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 13-08-2004 11:32 » 

ГРОМ, я вот никак не въеду насчёт убирания табуляций-отступов типа

Код:

for);;:
|
    for);;:
    |
        //...
    "
"


просто я причину не пойму. Но , к примеру, это связано с отображением текста в браузере. А возможно ли заменить ВСЕ пробелы символами "_" с цветом как у фона? А операции copy-paste перехватывать и подсовывать вместо "_" пробелы 0х20 ?
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 13-08-2004 12:06 » 

Алексей1153, где убираются? В статьях или на форуме? Чуть выше посмотри - о теге PRE и теге CODE.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines