| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | «  : 28-09-2003 10:32 »  |  | 
 
 Обнаружен след. баг.
 При выводе текстов программ #include <xxx.xxx>  пропадают названия фалов между символами < >
 Аналогично происходит с if (i < hhh ) && (i > ccc)
 
 Во всех местах надо заменять автоматически при выводе сообщения символы < > на &le &ge
 
 Но проблема в том, что не все!!! Тэги <img> <b> <i> <u> и другие тэги форматирования - таблиц и т.д. менять нельзя.
 
 Так как проводить полный парсинг текста на поддержку и выявление всех тэгов от html и на не html - тэги - проблематично стоит вопрос - как это сделать с наименьшими затратами!!!
 |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 : 28-09-2003 11:20 »  |  | 
 
 Можно окружать < и > пробелами и  так их распозновать |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #2 : 28-09-2003 16:05 »  |  | 
 
 сделать как и всегда в таких случаях  "<<" и ">>" - изобретено не нами |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #3 : 28-09-2003 19:57 »  |  | 
 
 Я говорю об автоматическом исправлеини в процессе вывода на экран , а не вручную...    Вручную мне и так приходится в лучшем случае по пол часа форматировать тексты. |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #4 : 29-09-2003 07:50 »  |  | 
 
 А зачем смешивать текст программы с html-тегами?Нельзя ли сначала перекодировать текст, а уж потом добавить теги?
 Уточни условия.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #5 : 29-09-2003 07:54 »  |  | 
 
 Условия очень просты - мне приходит текст или HTML для статьи - в первом случае форматирование я добавляю сам, когда ввожу статью - еще до работы скрипта, во втором случае частично форматирование и таблицы добавлены автором.
 Скрипт просто записывает текст в базу добавляя обратный слэш при необходимости перед " и другими символами где необходимо, а вот при выводе на обозрение надо убирать <> в случаях если это не тэг форматирования.
 
 Для этого нужен код или функция - знающая тэги HTML и их не трогающая, а остальное заменяющая на вышесказанные эквиваленты...
 |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #6 : 29-09-2003 08:24 »  |  | 
 
 Перекодировать надо до занесения в БД. Хранить надо в определенном формане (тот же html) и тогда не будет таких проблем.Т.е., если тебе приходит только два варианта - чистый текст и html, то сделай два скрипта - один будет приводить text к html, а потом исполнять первый (который заносит в БД). В php есть для этого ф-ия htmlspecialchars(). На чем, кстати, пишешь?
 Переделка же уже перепутаных текста и тегов возможна, но остается вероятность что не то перекодируется. Если очень надо, могу подсобить.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #7 : 29-09-2003 08:27 »  |  | 
 
 Пишу php код могу выслать ....
 Очень надо - на сайте код неверно отображается...
 |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #8 : 29-09-2003 08:38 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 29-09-2003 09:08 »  |  | 
 
 Ок - сформирую и кину то, что относится к работе с данными. |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 | 
								|  | « Ответ #12 : 30-09-2003 09:35 »  |  | 
 
 Тогда жду пример. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #13 : 30-09-2003 09:41 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #14 : 30-09-2003 10:10 »  |  | 
 
 Т.е. ни какого обвеса? Замечательно     Приступаю. А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется... |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #15 : 30-09-2003 10:28 »  |  | 
 
 Т.е. ни какого обвеса?
 
 Не понял? А как дела с атрибутами тегов в таблицах и списках? Наверняка без них не обойдется...
 
 Естественно - хотя атрибуты есть только к таблицам и img остальные практически не задействованы! Еще подзабыл один тэг <hr> тоже с атрибутами.... |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 | 
								|  | « Ответ #19 : 01-10-2003 07:29 »  |  | 
 
 Наздоровие   |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 | 
								|  | « Ответ #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 | 
								|  | « Ответ #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 »  |  | 
 
 Мда - можно и так, только явно можно и по другому, хотя и этот способ не плох.Счас меня заботит другое - где найти время на все....
 |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	|  |