Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_match_all по паттерну preg_replace 
:(
    Опции темы
Mal Hack
Дата 13.3.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



17 часов бьюсь, понять не могу... Суть в том.
пишу подцветкцу синтаксиса.... Дошел до CSS.
Поступаю следующим образом.
Вырезаю комменты и аттрибуты (solid, 1px и т.д.), затем подцвечиваю зарезервированные слова, после чело вставляю, подцвечивая аттрибуты и комменты. Вырезаю, т.к. top может быть как свойством, так и аттрибутом.
Итак трабла тут при вырезке аттрибутов.
Т.е. имея: border: **** ; надо вырезать все между : и ;
При этом, может иметь место запись a: hover {color:red;}, поэтому надо выкинуть то, где в середине {.
Вот код:
Код
     preg_match_all( "#(:)([^\{]+?)(\}|;)#s" , $txt , $attributes , PREG_PATTERN_ORDER );
     for( $i = 0 ; $i < count( $attributes[2] ) ; $i++ )
      {  $txt = str_replace( $attributes[2][$i] , "<!##ATT" . $i . "ATT!>##" , $txt );  }
// замена слов
     for( $i = 0 ; $i < count( $attributes[2] ) ; $i++ )
      {  $txt = str_replace( "<!##ATT" . $i . "ATT##!>" , "<span style='color:green;'>" . $attributes[2][$i] . "</span>" , $txt );  }

При этом коде, иногда из "1px solid #C2CFDF" вырезается только "1px" или из "transparent !important" только "transparent", причем на 10 строчек выше, может аналогичный код быть вырезан правильно.
НО
Код
$txt = preg_replace( "#(:)([^\{]+?)(\}|;)#s" , "\\1<span style='color:green;'>\\2</span>\\3" , $txt );

РАБОТАЕТ !! т.е. подцвечивает как нужно и что нужно без сбоев... Но позарез надо именно вырезать!!
Может есть у кого-ть идеи какие-ть.. Уже 17 часов бьюсь...
Добавлено @ 15:59
Как видно, паттерны полностью идентичны.
PM ICQ   Вверх
Irokez
Дата 22.3.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 4
Всего: 53



а можно пример CSS кода где происходят траблы?
Добавлено @ 20:38
кстати ты там немного напутал со своими тегами:
<!##ATT" . $i . "ATT!>## и <!##ATT" . $i . "ATT##!>
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0608 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.