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

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

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


« : 28-09-2003 10:32 » 

Обнаружен след. баг.

При выводе текстов программ #include <xxx.xxx>  пропадают названия фалов между символами < >
Аналогично происходит с if (i < hhh ) && (i > ccc)

Во всех местах надо заменять автоматически при выводе сообщения символы < > на &le &ge

Но проблема в том, что не все!!! Тэги <img> <b> <i> <u> и другие тэги форматирования - таблиц и т.д. менять нельзя.

Так как проводить полный парсинг текста на поддержку и выявление всех тэгов от html и на не html - тэги - проблематично стоит вопрос - как это сделать с наименьшими затратами!!!
Записан

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

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

WWW
« Ответ #1 : 28-09-2003 11:20 » 

Можно окружать < и > пробелами и  так их распозновать
Записан

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

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


« Ответ #2 : 28-09-2003 16:05 » 

сделать как и всегда в таких случаях  "<<" и ">>" - изобретено не нами
Записан

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

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


« Ответ #3 : 28-09-2003 19:57 » 

Я говорю об автоматическом исправлеини в процессе вывода на экран , а не вручную... Жаль
Вручную мне и так приходится в лучшем случае по пол часа форматировать тексты.
Записан

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

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

WWW
« Ответ #4 : 29-09-2003 07:50 » 

А зачем смешивать текст программы с html-тегами?
Нельзя ли сначала перекодировать текст, а уж потом добавить теги?
Уточни условия.
Записан

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

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


« Ответ #5 : 29-09-2003 07:54 » 

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

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

Для этого нужен код или функция - знающая тэги HTML и их не трогающая, а остальное заменяющая на вышесказанные эквиваленты...
Записан

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

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

WWW
« Ответ #6 : 29-09-2003 08:24 » 

Перекодировать надо до занесения в БД. Хранить надо в определенном формане (тот же html) и тогда не будет таких проблем.
Т.е., если тебе приходит только два варианта - чистый текст и html, то сделай два скрипта - один будет приводить text к html, а потом исполнять первый (который заносит в БД). В php есть для этого ф-ия htmlspecialchars(). На чем, кстати, пишешь?
Переделка же уже перепутаных текста и тегов возможна, но остается вероятность что не то перекодируется. Если очень надо, могу подсобить.
Записан

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

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


« Ответ #7 : 29-09-2003 08:27 » 

Пишу php код могу выслать ....

Очень надо - на сайте код неверно отображается...
Записан

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

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

WWW
« Ответ #8 : 29-09-2003 08:38 » 

Кидай. rxl@mail.ru
Записан

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

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


« Ответ #9 : 29-09-2003 09:08 » 

Ок - сформирую и кину то, что относится к работе с данными.
Записан

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

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

WWW
« Ответ #10 : 29-09-2003 18:26 » 

Я поэкспирементировал немного и пришел к выводу, что такую программу сделать можно, то она будет довольно сложной, и чем выше сложность, тем больше вероятность правильной обработки. Лучше было бы, конечно, упростить. Напр. ограничить разнообразие тегов - наверняка многие не будут встречаться (в html 4.0 описан 91 тег). Хотелось бы увидеть и какой-нибудь образец того, что надо переделать.
Записан

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

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


« Ответ #11 : 29-09-2003 19:15 » 

Завтра выложу пример статей - основные таги для отработки и поддержки <table> и все внутренние разметочные табличные + <br>, <u>, <i>, <b> <p> и их закрывающие + <img>.
Кроме того <h1>... <h5> Пока других замечено не было - если будет скрипт с предефайном списка тагов - было бы 100% подходяще!!!
Записан

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

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

WWW
« Ответ #12 : 30-09-2003 09:35 » 

Тогда жду пример.
Записан

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

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


« Ответ #13 : 30-09-2003 09:41 » 

А все - вот тебе пример статьи http://shelek.no-ip.com/primer.txt
Записан

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

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

WWW
« Ответ #14 : 30-09-2003 10:10 » 

Т.е. ни какого обвеса?
Замечательно  Отлично Приступаю.
А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется...
Записан

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

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


« Ответ #15 : 30-09-2003 10:28 » 

Цитата

Т.е. ни какого обвеса?

Не понял?

Цитата

А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется...

Естественно - хотя атрибуты есть только к таблицам и img остальные практически не задействованы!

Еще подзабыл один тэг <hr> тоже с атрибутами....
Записан

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

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

WWW
« Ответ #16 : 30-09-2003 13:37 » 

Цитата
Не понял?
Я имел в виду <HTML><HEAD>.... и т.п.

Вот первая версия. Ненужные теги коментарятся в инициализации notags_init()::$tags .
Одно условие - тег должен умещаться на одной строке, т.е. конструкция <TAG attr....> - так проще. в общем, работает, но чего доделать еще есть.
Код:
<?php

#
# $notags__tags_re - global var.
# notags_init() - make $notags__tags_re .
# notags_correct($str) - returns fixed string.
#

######################

$notags__tags_re="";

function 
notags_init() {
    static 
$tags=array( # HTML 4.0 tags
"A",
"ABBR",
"ACRONYM",
"ADDRESS",
# "APPLET",
# "AREA",
"B",
# "BASE",
# "BASEFONT",
# "BDO",
"BIG",
"BLOCKQUOTE",
# "BODY",
"BR",
# "BUTTON",
"CAPTION",
"CENTER",
"CITE",
"CODE",
# "COL",
# "COLGROUP",
"DD",
"DEL",
"DFN",
"DIR",
# "DIV",
"DL",
"DT",
"EM",
# "FIELDSET",
# "FONT",
# "FORM",
# "FRAME",
# "FRAMESET",
"H1",
"H2",
"H3",
"H4",
"H5",
"H6",
# "HEAD",
# "HR",
# "HTML",
"I",
# "IFRAME",
"IMG",
# "INPUT",
"INS",
# "ISINDEX",
# "KBD",
# "LABEL",
# "LEGEND",
"LI",
# "LINK",
# "MAP",
# "MENU",
# "META",
# "NOFRAMES",
# "NOSCRIPT",
# "OBJECT",
"OL",
# "OPTGROUP",
# "OPTION",
"P",
# "PARAM",
"PRE",
"Q",
"S",
"SAMP",
# "SCRIPT",
# "SELECT",
"SMALL",
# "SPAN",
"STRIKE",
"STRONG",
# "STYLE",
"SUB",
"SUP",
"TABLE",
# "TBODY",
"TD",
# "TEXTAREA",
# "TFOOT",
"TH",
# "THEAD",
# "TITLE",
"TR",
"TT",
"U",
"UL"
# "VAR"
);
    global 
$notags__tags_re;

    
$s=$tags[0];
    
$l=count($tags);
    for(
$i=1;$i<$l;$i++) $s.="|$tags[$i]";
    
$notags__tags_re=$s;
    }

function 
notags_correct($str) {
    global 
$notags__tags_re;

    
$a=preg_split(&#39;%(</?[^<]+>|&#38;#?\w+;)%&#39;,$str,-1,PREG_SPLIT_DELIM_CAPTURE);
    
foreach($a as $n => $v) {
$f=1;
if(substr($v,0,1)==&#39;<&#39;) {
    if(preg_match(&#39;%^</?(&#39;."$notags__tags_re".&#39;)(\s+.*)?>
$%i',$v)) $f=0;

    }
elseif(substr($v,0,1)=='&' && substr($v,strlen($v)-1,1)==';') {
#...
    $f=0;
    }
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;
    }
}
    return join($a,'');
    }

##################

# debug
notags_init();
$file=fopen("primer.txt","r");
while($s=fgets($file,1024)) print(notags_correct($s));
fclose($file);

?>
« Последнее редактирование: 25-11-2007 21:52 от Алексей1153++ » Записан

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

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


« Ответ #17 : 30-09-2003 13:50 » 

Сейчас попробую....
Записан

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

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


« Ответ #18 : 01-10-2003 05:03 » 

Проверяйте - вроде работает - огромное спасибо!!!
Записан

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

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

WWW
« Ответ #19 : 01-10-2003 07:29 » 

Наздоровие Ага
Записан

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

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

WWW
« Ответ #20 : 01-10-2003 09:28 » 

Небольшое улучшение.
Код:
118c118
<     $a=preg_split('%(</?[^<]+>|&#?\w+;)%',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
---
>     $a=preg_split('%(<[^<]+>|&#?\w+;)%',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
122c122
<     if(preg_match('%^</?('."$notags__tags_re".')(\s+.*)?>$%i',$v)) $f=0;
---
>     if(preg_match('%^</?('."$notags__tags_re".')(\s+[\w.]+(?:\s*=\s*"?[^"]*"?)?)*\s*/?>$%i',$v)) $f=0;
« Последнее редактирование: 25-11-2007 21:52 от Алексей1153++ » Записан

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

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


« Ответ #21 : 01-10-2003 11:54 » 

В чем это выразится???
Записан

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

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

WWW
« Ответ #22 : 01-10-2003 13:53 » 

Более надежное отделение тегов от не-тегов. Опять же не 100%, но уже ближе
Записан

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

us
Offline Offline

« Ответ #23 : 01-10-2003 16:13 » 

Цитата: Гром
Обнаружен след. баг.

При выводе текстов программ #include <xxx.xxx>  пропадают названия фалов между символами < >
Аналогично происходит с if (i < hhh ) && (i > ccc)

Во всех местах надо заменять автоматически при выводе сообщения символы < > на &le &ge

Но проблема в том, что не все!!! Тэги <img> <b> <i> <u> и другие тэги форматирования - таблиц и т.д. менять нельзя.

Так как проводить полный парсинг текста на поддержку и выявление всех тэгов от html и на не html - тэги - проблематично стоит вопрос - как это сделать с наименьшими затратами!!!


есть еще проблем:
в начале строки удаляются все пробелы
Записан

когда-нибудь, я верю, ты будешь ехать по этому городу и поймёшь, что хочешь увидеть меня за рулём мчащейся по соседней полосе машины.
но тогда меня уже не будет
в этом городе
forever yours.
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #24 : 01-10-2003 17:19 » 

Цитата

в начале строки удаляются все пробелы


так это баг? Да, неудобно, только я думал это так задумато. Ещё бы как-нибудь табуляцию вставлять.

и такое - иногда набор символов превращается в смайл - не есть гут  Вот такой я вот
Записан

Sommer
Молодой специалист

us
Offline Offline

« Ответ #25 : 01-10-2003 18:04 » 

Алексей1153,
мн не удобно - для меня БАГ
кстати, не только в начале строки но и в середине..
что-тот типа trim...
и иногда хочется напечатать :_) (но без подчеркивания)
Записан

когда-нибудь, я верю, ты будешь ехать по этому городу и поймёшь, что хочешь увидеть меня за рулём мчащейся по соседней полосе машины.
но тогда меня уже не будет
в этом городе
forever yours.
RXL
Технический
Администратор

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

WWW
« Ответ #26 : 02-10-2003 08:18 » 

Обрезание начальных и концевых пробелов происходит в любом случае - при приеме поста на сервер, или при отображении браузером (html игнорирует отступы пробелами везде, кроме тега <PRE>, а концевые пробелы не имеют смысла). Если надо сохранить форматирование пользуйся [ code ].
Записан

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

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


« Ответ #27 : 02-10-2003 08:54 » 

при отображении браузером html игнорирует отступы

Пока решить это не удавалось.
Сидел смотрел код этого форума ничерита не понял Жаль
Записан

А птичку нашу прошу не обижать!!!
Fireworm
Гость
« Ответ #28 : 02-10-2003 09:48 » 

Для отступов можно сделать след:
заводиш прозрачную картинку 1х1 пиксель.
Парсиш хтмл и в местах, где стоит tab вставляеш <img src="images/pixel.gif" height=1 width="x*n">
Где x - количество пикселов для 1го таба (подбирается эксперементально) а n - количество табов.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

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


« Ответ #29 : 02-10-2003 10:15 » 

Мда - можно и так, только явно можно и по другому, хотя и этот способ не плох.
Счас меня заботит другое - где найти время на все....
Записан

А птичку нашу прошу не обижать!!!
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines