Преобразование html в bb-code 
				  
				
UIYOYXB Дата: Ср, 28 Января 2015, 00:18 | Сообщение # 1  Возникла необходимость в преобразовании html тегов в bb-code, и возникла трудность с преобразованием html в bb-code следующих html тегов, а именно: Код
<span style="font-size:14pt;">Размер шрифта</span> 
Код
 
Код
[size=14pt][font=Arial][color=#1155cc]Текст[/size][/font][/color]
 
 
Сообщение отредактировано UIYOYXB  - Ср, 28 Января 2015, 00:19 
  
 
Сообщение Возникла необходимость в преобразовании html тегов в bb-code, и возникла трудность с преобразованием html в bb-code следующих html тегов, а именно: Код
<span style="font-size:14pt;">Размер шрифта</span> 
Код
 
Код
[size=14pt][font=Arial][color=#1155cc]Текст[/size][/font][/color]
 Автор - UIYOYXB 28 Января 2015  в 00:18  
Callisto Дата: Ср, 28 Января 2015, 03:24 | Сообщение # 2  На работе скучно, т.ч. немного поэкспериментировала Добавлено  (28 Января 2015, 03:24)
 
 
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой) 
Сообщение отредактировано Callisto  - Ср, 28 Января 2015, 03:23 
  
 
DEMBEL Дата: Ср, 28 Января 2015, 09:27 | Сообщение # 3  В данном конкретном случае, когда нет текста между тегами, разве есть разница в порядке закрытия тегов? Работает же и так. Как задавать вопросы    
 
Сообщение В данном конкретном случае, когда нет текста между тегами, разве есть разница в порядке закрытия тегов? Работает же и так. Автор - DEMBEL 28 Января 2015  в 09:27  
UIYOYXB Дата: Ср, 28 Января 2015, 18:59 | Сообщение # 4  Цитата  Callisto  (
)
На работе скучно, т.ч. немного поэкспериментировала 
Код
<span style="font-size:14pt;">Это просто большой текст и дальше за ним тоже большой текст <span style="color:#1155cc">а это текст другого цвета</span><span style="font-family:Arial">а это текст другим шрифтом</span></span> 
Цитата  Callisto  (
)
Хотя, мне кажется, лучше использовать регулярные выражения, но в НБ у меня с ними не заладилось 
Цитата  DEMBEL  (
)
В данном конкретном случае, когда нет текста между тегами, разве есть разница в порядке закрытия тегов? Работает же и так. 
Сообщение отредактировано UIYOYXB  - Ср, 28 Января 2015, 19:02 
  
 
Сообщение Цитата  Callisto  (
)
На работе скучно, т.ч. немного поэкспериментировала 
Код
<span style="font-size:14pt;">Это просто большой текст и дальше за ним тоже большой текст <span style="color:#1155cc">а это текст другого цвета</span><span style="font-family:Arial">а это текст другим шрифтом</span></span> 
Цитата  Callisto  (
)
Хотя, мне кажется, лучше использовать регулярные выражения, но в НБ у меня с ними не заладилось 
Цитата  DEMBEL  (
)
В данном конкретном случае, когда нет текста между тегами, разве есть разница в порядке закрытия тегов? Работает же и так. 
Автор - UIYOYXB 28 Января 2015  в 18:59  
Callisto Дата: Ср, 28 Января 2015, 20:32 | Сообщение # 5  Цитата  UIYOYXB  (
)
если он есть прошу кинуть ссылку
hpwControl Цитата  UIYOYXB  (
)
например если между тегами еще будет информация
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой) 
  
 
Сообщение Цитата  UIYOYXB  (
)
если он есть прошу кинуть ссылку
hpwControl Цитата  UIYOYXB  (
)
например если между тегами еще будет информация
Автор - Callisto 28 Января 2015  в 20:32  
mishem Дата: Ср, 28 Января 2015, 21:49 | Сообщение # 6  Цитата  Callisto  (
)
просто я HTML плохо знаю, чтоб предусмотреть все
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь    
 
Сообщение Цитата  Callisto  (
)
просто я HTML плохо знаю, чтоб предусмотреть все
Автор - mishem 28 Января 2015  в 21:49  
Сообщение Вообщем удалось достигнуть некоторых результатов  Автор - UIYOYXB 29 Января 2015  в 00:43   
Callisto Дата: Чт, 29 Января 2015, 02:47 | Сообщение # 8  Цитата  mishem  (
)
но сделать что то универсальное, НЕ ВОЗМОЖНО. 
Цитата  UIYOYXB  (
)
вопрос как это распарсить и преобразовать остается открытым
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой) 
  
 
Сообщение Цитата  mishem  (
)
но сделать что то универсальное, НЕ ВОЗМОЖНО. 
Цитата  UIYOYXB  (
)
вопрос как это распарсить и преобразовать остается открытым
Автор - Callisto 29 Января 2015  в 02:47  
DEMBEL Дата: Чт, 29 Января 2015, 10:51 | Сообщение # 9  Ого, Callisto  уже близка к разгадке ) Есс-но, разбирать эту матрешку тегов нужно в обратном её созданию порядке, и полагать что тогда первый попавшийся закрывающий тег будет принадлежать тому, который разбираем. Ну и так проходить строку несколько раз подряд по кол-ву тегов, но сперва проверить, равно ли кол-во открывающих тегов кол-ву закрывающих, если что добавлять или выкидывать ошибку.Добавлено  (29 Января 2015, 10:51)
 
Как задавать вопросы    
 
Сообщение Ого, Callisto  уже близка к разгадке ) Есс-но, разбирать эту матрешку тегов нужно в обратном её созданию порядке, и полагать что тогда первый попавшийся закрывающий тег будет принадлежать тому, который разбираем. Ну и так проходить строку несколько раз подряд по кол-ву тегов, но сперва проверить, равно ли кол-во открывающих тегов кол-ву закрывающих, если что добавлять или выкидывать ошибку.Добавлено  (29 Января 2015, 10:51)
 Автор - DEMBEL 29 Января 2015  в 10:51  
UIYOYXB Дата: Чт, 29 Января 2015, 19:01 | Сообщение # 10  Цитата  Callisto  (
)
Есть мысль, но проверить пока не могу. 
 Надо брать первый тег и смотреть что идет за ним, если следующий тег, то отбрасывать первый и работать со вторым, если текст, то смотреть, что идет после текста, если завершающий тег, то уже обработать этот участок строки и начать сначала. Если опять идет тег, то отбрасываем все что идет до него и опять возвращаемся к начальному действию. 
 Но тут нужна одна одна фишка, поиск в строке с определенной позиции (в Lua есть такое), в НБ можно реализовать функцией. 
 Мыслей много, но проверить пока не могу 
Цитата  DEMBEL  (
)
Ого, Callisto уже близка к разгадке ) Есс-но, разбирать эту матрешку тегов нужно в обратном её созданию порядке, и полагать что тогда первый попавшийся закрывающий тег будет принадлежать тому, который разбираем. Ну и так проходить строку несколько раз подряд по кол-ву тегов, но сперва проверить, равно ли кол-во открывающих тегов кол-ву закрывающих, если что добавлять или выкидывать ошибку.
Цитата  DEMBEL  (
)
а лучше на js все это написать регулярками, есть же примеры конвертеров в сети вроде
  
 
Сообщение Цитата  Callisto  (
)
Есть мысль, но проверить пока не могу. 
 Надо брать первый тег и смотреть что идет за ним, если следующий тег, то отбрасывать первый и работать со вторым, если текст, то смотреть, что идет после текста, если завершающий тег, то уже обработать этот участок строки и начать сначала. Если опять идет тег, то отбрасываем все что идет до него и опять возвращаемся к начальному действию. 
 Но тут нужна одна одна фишка, поиск в строке с определенной позиции (в Lua есть такое), в НБ можно реализовать функцией. 
 Мыслей много, но проверить пока не могу 
Цитата  DEMBEL  (
)
Ого, Callisto уже близка к разгадке ) Есс-но, разбирать эту матрешку тегов нужно в обратном её созданию порядке, и полагать что тогда первый попавшийся закрывающий тег будет принадлежать тому, который разбираем. Ну и так проходить строку несколько раз подряд по кол-ву тегов, но сперва проверить, равно ли кол-во открывающих тегов кол-ву закрывающих, если что добавлять или выкидывать ошибку.
Цитата  DEMBEL  (
)
а лучше на js все это написать регулярками, есть же примеры конвертеров в сети вроде
Автор - UIYOYXB 29 Января 2015  в 19:01  
Сообщение Поспешил выложить. Туго сейчас соображаю.  Автор - mishem 29 Января 2015  в 20:40   
Callisto Дата: Чт, 29 Января 2015, 20:46 | Сообщение # 12  Цитата  DEMBEL  (
)
Ого, Callisto уже близка к разгадке 
Цитата  UIYOYXB  (
)
у людей были сложности с определением границами тега который закрывает тег который имеет вложенные теги
Код
{NeoBook Function} 
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой) 
  
 
Сообщение Цитата  DEMBEL  (
)
Ого, Callisto уже близка к разгадке 
Цитата  UIYOYXB  (
)
у людей были сложности с определением границами тега который закрывает тег который имеет вложенные теги
Код
{NeoBook Function} 
Автор - Callisto 29 Января 2015  в 20:46  
mishem Дата: Чт, 29 Января 2015, 21:47 | Сообщение # 13  Вот так вроде правильно будет 
Код
hpwReplaceRegExp "<span style=[#34]font-size:" "[TextEntry1]" "[#91]size=" "" "[TextEntry1]" 
hpwControl   
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь  Сообщение отредактировано mishem  - Пт, 30 Января 2015, 20:43 
  
 
Сообщение Вот так вроде правильно будет 
Код
hpwReplaceRegExp "<span style=[#34]font-size:" "[TextEntry1]" "[#91]size=" "" "[TextEntry1]" 
hpwControl   Автор - mishem 29 Января 2015  в 21:47  
UIYOYXB Дата: Чт, 29 Января 2015, 22:30 | Сообщение # 14  Callisto , спасибо mishem , спасибо, но по моему у Вас получилось практически тоже самое что и у меня. Для примера будем парсить и преобразовывать вот это: Код
<span style="font-size:14pt;"><span style="font-family:Arial"><span style="color:#1155cc">Текст</span></span></span> 
  
 
Сообщение Callisto , спасибо mishem , спасибо, но по моему у Вас получилось практически тоже самое что и у меня. Для примера будем парсить и преобразовывать вот это: Код
<span style="font-size:14pt;"><span style="font-family:Arial"><span style="color:#1155cc">Текст</span></span></span> 
Автор - UIYOYXB 29 Января 2015  в 22:30  
mishem Дата: Пт, 30 Января 2015, 00:00 | Сообщение # 15  UIYOYXB , еще раз повторяю, сделать что то универсальное, НЕ ВОЗМОЖНО. Добавлено  (29 Января 2015, 23:48) 
Код
hpwExecRegExpList "<span style=[#34]font-size:|<span style=[#34]font-family:|<span style=[#34]color:|</span>" "[TextEntry1]" "[#13]" "[TextEntry3]" 
Цитата  UIYOYXB  (
)
 Для примера будем парсить и преобразовывать вот это: 
Изменил код. Теперь по моему правильно. Проверяй. Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь  Сообщение отредактировано mishem  - Пт, 30 Января 2015, 20:43 
  
 
Сообщение UIYOYXB , еще раз повторяю, сделать что то универсальное, НЕ ВОЗМОЖНО. Добавлено  (29 Января 2015, 23:48) 
Код
hpwExecRegExpList "<span style=[#34]font-size:|<span style=[#34]font-family:|<span style=[#34]color:|</span>" "[TextEntry1]" "[#13]" "[TextEntry3]" 
Цитата  UIYOYXB  (
)
 Для примера будем парсить и преобразовывать вот это: 
Изменил код. Теперь по моему правильно. Проверяй. Автор - mishem 30 Января 2015  в 00:00  
UIYOYXB Дата: Пт, 30 Января 2015, 00:44 | Сообщение # 16  Цитата  mishem  (
)
Изменил код. Теперь по моему правильно. Проверяй. 
Callisto  спасибо. С использованием поиска на регулярных выражениях я вроде таки могу выделить структуру документа, если все получится то выложу код или чуть чуть попозже или завтра, а то глаза уже слипаются Сообщение отредактировано UIYOYXB  - Пт, 30 Января 2015, 00:49 
  
 
Сообщение Цитата  mishem  (
)
Изменил код. Теперь по моему правильно. Проверяй. 
Callisto  спасибо. С использованием поиска на регулярных выражениях я вроде таки могу выделить структуру документа, если все получится то выложу код или чуть чуть попозже или завтра, а то глаза уже слипаются Автор - UIYOYXB 30 Января 2015  в 00:44  
mishem Дата: Пт, 30 Января 2015, 00:53 | Сообщение # 17  Не, все равно не правильно. Не возможно предвидеть все результаты. Добавлено  (30 Января 2015, 00:53) Цитата  UIYOYXB  (
)
К сожалению опять немного не то 
Код
Для того чтобы изменить цвет текста нужно вставить тег <span style="color:#1155cc">, а ты вставляешь <span style="font-family:Arial">. Это же не правильно. 
 
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь  Сообщение отредактировано mishem  - Пт, 30 Января 2015, 00:54 
  
 
Сообщение Не, все равно не правильно. Не возможно предвидеть все результаты. Добавлено  (30 Января 2015, 00:53) Цитата  UIYOYXB  (
)
К сожалению опять немного не то 
Код
Для того чтобы изменить цвет текста нужно вставить тег <span style="color:#1155cc">, а ты вставляешь <span style="font-family:Arial">. Это же не правильно. 
 Автор - mishem 30 Января 2015  в 00:53  
UIYOYXB Дата: Пт, 30 Января 2015, 02:04 | Сообщение # 18  Цитата  mishem  (
)
Даже просто как вариант, представим что в самом тексте например есть что то типа такого: 
Цитата  mishem  (
)
Да, я уже увидел. Нельзя посчитать и определить все закрывающиеся теги и в каком именно месте какой должен находится. 
Сообщение отредактировано UIYOYXB  - Пт, 30 Января 2015, 02:08 
  
 
Сообщение Цитата  mishem  (
)
Даже просто как вариант, представим что в самом тексте например есть что то типа такого: 
Цитата  mishem  (
)
Да, я уже увидел. Нельзя посчитать и определить все закрывающиеся теги и в каком именно месте какой должен находится. 
Автор - UIYOYXB 30 Января 2015  в 02:04  
Callisto Дата: Пт, 30 Января 2015, 03:34 | Сообщение # 19  Хочется уточнить ТЗ, подразумевается, что будет применяться только тег <span>  или могут быть и другие в тексте? 
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой) 
  
 
Сообщение Хочется уточнить ТЗ, подразумевается, что будет применяться только тег <span>  или могут быть и другие в тексте? Автор - Callisto 30 Января 2015  в 03:34  
DEMBEL Дата: Пт, 30 Января 2015, 11:19 | Сообщение # 20  Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего и тестил его на соответствие бб-коду, затем зная обе позиции производил замену, далее процесс повторяется. 
Как задавать вопросы    
 
Сообщение Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего и тестил его на соответствие бб-коду, затем зная обе позиции производил замену, далее процесс повторяется. Автор - DEMBEL 30 Января 2015  в 11:19  
mishem Дата: Пт, 30 Января 2015, 20:42 | Сообщение # 21  Цитата  DEMBEL  (
)
Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего
Код
hpwReplaceRegExp ";[#34]>|[#34]>" "[TextEntry1]" "[#93]" "" "[TextEntry1]" 
Код
 
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь  Сообщение отредактировано mishem  - Пт, 30 Января 2015, 21:18 
  
 
Сообщение Цитата  DEMBEL  (
)
Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего
Код
hpwReplaceRegExp ";[#34]>|[#34]>" "[TextEntry1]" "[#93]" "" "[TextEntry1]" 
Код
 
Автор - mishem 30 Января 2015  в 20:42  
UIYOYXB Дата: Пт, 30 Января 2015, 20:44 | Сообщение # 22  Вообщем я разобрался где был баг, теперь все работает как надо Цитата  Callisto  (
)
Хочется уточнить ТЗ, подразумевается, что будет применяться только тег <span> или могут быть и другие в тексте? 
Цитата  DEMBEL  (
)
Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего и тестил его на соответствие бб-коду, затем зная обе позиции производил замену, далее процесс повторяется. 
mishem , ух ты, Ваш новый пример работает тоже так как нужно и имеет меньше кода чем мой  
 
Сообщение отредактировано UIYOYXB  - Пт, 30 Января 2015, 20:57 
  
 
Сообщение Вообщем я разобрался где был баг, теперь все работает как надо Цитата  Callisto  (
)
Хочется уточнить ТЗ, подразумевается, что будет применяться только тег <span> или могут быть и другие в тексте? 
Цитата  DEMBEL  (
)
Я бы просто искал в строке закрывающий тег, затем от этой позиции шел назад обратным поиском до открывающего и тестил его на соответствие бб-коду, затем зная обе позиции производил замену, далее процесс повторяется. 
mishem , ух ты, Ваш новый пример работает тоже так как нужно и имеет меньше кода чем мой  Автор - UIYOYXB 30 Января 2015  в 20:44  
Сообщение Цитата  UIYOYXB  (
)
и имеет меньше кода
Автор - mishem 30 Января 2015  в 21:20   
UIYOYXB Дата: Пт, 30 Января 2015, 23:13 | Сообщение # 24  Цитата  mishem  (
)
Выше добавил еще покороче. 
  
 
Сообщение Цитата  mishem  (
)
Выше добавил еще покороче. 
Автор - UIYOYXB 30 Января 2015  в 23:13  
mishem Дата: Вс, 01 Февраля 2015, 15:29 | Сообщение # 25  Этот алгоритм работает быстрее чем предыдущий: 
Код
SetVar "[Text1]" "[TextEntry1]" 
Код
SetVar "[Text1]" "[TextEntry1]" 
 
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь    
 
Сообщение Этот алгоритм работает быстрее чем предыдущий: 
Код
SetVar "[Text1]" "[TextEntry1]" 
Код
SetVar "[Text1]" "[TextEntry1]" 
 Автор - mishem 01 Февраля 2015  в 15:29  
ponand Дата: Вс, 01 Февраля 2015, 18:35 | Сообщение # 26  а может так ? Код
 
 
  
 
Сообщение а может так ? Код
 
 Автор - ponand 01 Февраля 2015  в 18:35  
mishem Дата: Вс, 01 Февраля 2015, 19:45 | Сообщение # 27  Регулярка это сила, когда знаешь как ее правильно написать. Добавлено  (01 Февраля 2015, 19:45)ponand , если не сложно, распиши как работает твое регулярное выражение.
 
Не хочешь читать хелп? Если хелп и форум не помогли, тогда все ответы здесь    
 
Сообщение Регулярка это сила, когда знаешь как ее правильно написать. Добавлено  (01 Февраля 2015, 19:45)ponand , если не сложно, распиши как работает твое регулярное выражение.
 Автор - mishem 01 Февраля 2015  в 19:45  
ponand Дата: Вс, 01 Февраля 2015, 20:23 | Сообщение # 28  даже не знаю что можно там расписать, обычное выдергивание подстроки. Код
 
 
Сообщение отредактировано ponand  - Вс, 01 Февраля 2015, 20:31 
  
 
Сообщение даже не знаю что можно там расписать, обычное выдергивание подстроки. Код
 
 Автор - ponand 01 Февраля 2015  в 20:23