Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Парсинг текста

Сообщения:  [1-6] 

 
 автор: DJ Paltus   (13.03.2012 в 10:50)   письмо автору
 
   для: Lelik   (13.03.2012 в 02:07)
 

Вообще, если речь идет о парсинге таблицы стилей, то подход в принципе неверный (см. начало треда), на выходе должны получаться классы с наследованием свойств, то есть так:


.one {border: 1px solid red;}
.one .two {margin: 10px; border: 1px solid green;}


Надо думать дальше.

  Ответить  
 
 автор: Lelik   (13.03.2012 в 02:07)   письмо автору
 
   для: DJ Paltus   (12.03.2012 в 19:24)
 

спасибо за алгоритм, всё хорошо, но когда код станет таким:

.one {
  border: 1px solid red;

  .two {
    margin: 10px;

      .three {
        border: 1px solid red;
      }

  }

  .two {
    margin: 10px;

      .three {
        border: 1px solid red;
      }

  }



то будет сложно у второго .two определить родителя, а это было бы полезно знать

  Ответить  
 
 автор: DJ Paltus   (12.03.2012 в 19:24)   письмо автору
 
   для: Lelik   (12.03.2012 в 17:28)
 

Вроде бы, просто - разваливаем текст в массив, пользуясь символом точки как разделителем. А потом смотрим, какие элементы не заканчиваются на "}", те заканчиваем принудительно. И останется лишь избавиться от хвоста, в котором куча закрывающих "}". Не забыть добавить точку к началу каждого оставшегося элемента массива.

  Ответить  
 
 автор: Lelik   (12.03.2012 в 17:28)   письмо автору
 
   для: Киналь   (12.03.2012 в 17:27)
 

вы не поняли, пробелы и пр. убрать это не проблема, я про вложенность:

.one {
  border: 1px solid red;

  .two {
    margin: 10px;

      .three {
        border: 1px solid red;
      }

  }

}

и эта вложенность можеть быть неограниченной

  Ответить  
 
 автор: Киналь   (12.03.2012 в 17:27)   письмо автору
 
   для: Lelik   (12.03.2012 в 17:23)
 

Первым проходом заменяем все двойные пробелы, табуляции и переводы строки на одиночный пробел; вторым проходом заменяем точку на перевод строки и точку. Для красоты убираем перевод строки в начале текста.

  Ответить  
 
 автор: Lelik   (12.03.2012 в 17:23)   письмо автору
 
 

Здрасьте всем.

как мне лучше парсить такого вот рода текст:

.one {
  border: 1px solid red;
  .two {
    margin: 10px;
    border: 1px solid green;
  }
}


на выходе, чтобы получилось:

.one {border: 1px solid red;}
.two {margin: 10px; border: 1px solid green;}

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования