Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« : 28-09-2003 10:32 » |
|
Обнаружен след. баг.
При выводе текстов программ #include <xxx.xxx> пропадают названия фалов между символами < > Аналогично происходит с if (i < hhh ) && (i > ccc)
Во всех местах надо заменять автоматически при выводе сообщения символы < > на &le &ge
Но проблема в том, что не все!!! Тэги <img> <b> <i> <u> и другие тэги форматирования - таблиц и т.д. менять нельзя.
Так как проводить полный парсинг текста на поддержку и выявление всех тэгов от html и на не html - тэги - проблематично стоит вопрос - как это сделать с наименьшими затратами!!!
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 28-09-2003 11:20 » |
|
Можно окружать < и > пробелами и так их распозновать
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 28-09-2003 16:05 » |
|
сделать как и всегда в таких случаях "<<" и ">>" - изобретено не нами
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #3 : 28-09-2003 19:57 » |
|
Я говорю об автоматическом исправлеини в процессе вывода на экран , а не вручную... Вручную мне и так приходится в лучшем случае по пол часа форматировать тексты.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #4 : 29-09-2003 07:50 » |
|
А зачем смешивать текст программы с html-тегами? Нельзя ли сначала перекодировать текст, а уж потом добавить теги? Уточни условия.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #5 : 29-09-2003 07:54 » |
|
Условия очень просты - мне приходит текст или HTML для статьи - в первом случае форматирование я добавляю сам, когда ввожу статью - еще до работы скрипта, во втором случае частично форматирование и таблицы добавлены автором.
Скрипт просто записывает текст в базу добавляя обратный слэш при необходимости перед " и другими символами где необходимо, а вот при выводе на обозрение надо убирать <> в случаях если это не тэг форматирования.
Для этого нужен код или функция - знающая тэги HTML и их не трогающая, а остальное заменяющая на вышесказанные эквиваленты...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #6 : 29-09-2003 08:24 » |
|
Перекодировать надо до занесения в БД. Хранить надо в определенном формане (тот же html) и тогда не будет таких проблем. Т.е., если тебе приходит только два варианта - чистый текст и html, то сделай два скрипта - один будет приводить text к html, а потом исполнять первый (который заносит в БД). В php есть для этого ф-ия htmlspecialchars(). На чем, кстати, пишешь? Переделка же уже перепутаных текста и тегов возможна, но остается вероятность что не то перекодируется. Если очень надо, могу подсобить.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #7 : 29-09-2003 08:27 » |
|
Пишу php код могу выслать ....
Очень надо - на сайте код неверно отображается...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #8 : 29-09-2003 08:38 » |
|
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #9 : 29-09-2003 09:08 » |
|
Ок - сформирую и кину то, что относится к работе с данными.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #10 : 29-09-2003 18:26 » |
|
Я поэкспирементировал немного и пришел к выводу, что такую программу сделать можно, то она будет довольно сложной, и чем выше сложность, тем больше вероятность правильной обработки. Лучше было бы, конечно, упростить. Напр. ограничить разнообразие тегов - наверняка многие не будут встречаться (в html 4.0 описан 91 тег). Хотелось бы увидеть и какой-нибудь образец того, что надо переделать.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #11 : 29-09-2003 19:15 » |
|
Завтра выложу пример статей - основные таги для отработки и поддержки <table> и все внутренние разметочные табличные + <br>, <u>, <i>, <b> <p> и их закрывающие + <img>. Кроме того <h1>... <h5> Пока других замечено не было - если будет скрипт с предефайном списка тагов - было бы 100% подходяще!!!
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #12 : 30-09-2003 09:35 » |
|
Тогда жду пример.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #13 : 30-09-2003 09:41 » |
|
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #14 : 30-09-2003 10:10 » |
|
Т.е. ни какого обвеса? Замечательно Приступаю. А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #15 : 30-09-2003 10:28 » |
|
Т.е. ни какого обвеса?
Не понял? А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется...
Естественно - хотя атрибуты есть только к таблицам и img остальные практически не задействованы! Еще подзабыл один тэг <hr> тоже с атрибутами....
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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('%(</?[^<]+>|&#?\w+;)%',$str,-1,PREG_SPLIT_DELIM_CAPTURE); foreach($a as $n => $v) { $f=1; if(substr($v,0,1)=='<') { if(preg_match('%^</?('."$notags__tags_re".')(\s+.*)?>$%i',$v)) $f=0;
} elseif(substr($v,0,1)=='&' && substr($v,strlen($v)-1,1)==';') { #... $f=0; } if($f) { $v=preg_replace('/&/','&',$v); $v=preg_replace('/</','<',$v); $v=preg_replace('/>/','>',$v); $v=preg_replace('/"/','"',$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++ »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #17 : 30-09-2003 13:50 » |
|
Сейчас попробую....
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #18 : 01-10-2003 05:03 » |
|
Проверяйте - вроде работает - огромное спасибо!!!
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #19 : 01-10-2003 07:29 » |
|
Наздоровие
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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++ »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #21 : 01-10-2003 11:54 » |
|
В чем это выразится???
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #22 : 01-10-2003 13:53 » |
|
Более надежное отделение тегов от не-тегов. Опять же не 100%, но уже ближе
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sommer
Молодой специалист
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.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #24 : 01-10-2003 17:19 » |
|
в начале строки удаляются все пробелы
так это баг? Да, неудобно, только я думал это так задумато. Ещё бы как-нибудь табуляцию вставлять. и такое - иногда набор символов превращается в смайл - не есть гут
|
|
|
Записан
|
|
|
|
Sommer
Молодой специалист
Offline
|
|
« Ответ #25 : 01-10-2003 18:04 » |
|
Алексей1153, мн не удобно - для меня БАГ кстати, не только в начале строки но и в середине.. что-тот типа trim... и иногда хочется напечатать :_) (но без подчеркивания)
|
|
|
Записан
|
когда-нибудь, я верю, ты будешь ехать по этому городу и поймёшь, что хочешь увидеть меня за рулём мчащейся по соседней полосе машины. но тогда меня уже не будет в этом городе forever yours.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #26 : 02-10-2003 08:18 » |
|
Обрезание начальных и концевых пробелов происходит в любом случае - при приеме поста на сервер, или при отображении браузером (html игнорирует отступы пробелами везде, кроме тега <PRE>, а концевые пробелы не имеют смысла). Если надо сохранить форматирование пользуйся [ code ].
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
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 - количество табов.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #29 : 02-10-2003 10:15 » |
|
Мда - можно и так, только явно можно и по другому, хотя и этот способ не плох. Счас меня заботит другое - где найти время на все....
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
|