Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Maxx 04.02.2008 20:48 / 04.02.2008 22:44
Я бы пошел немного другим путем, без использования таблиц, потому как в случае с тэгами - их может быть довольно много и табличка будет большая. При этом у тэгов возможна высокая повторяемость.$str[<-- здесь наш HTML -->] $tReplaces[^table::create{from to < <^; > >^;}] $hTags[^hash::create[]] ^rem{сюда складываем наши тэги и их MD5. Хэш нужен для того, чтобы два <p>, например сохранялись в одном экземпляре} $str[^str.match[(<\/?[^^>]+>)][g]{ $md5[^math:md5[$match.1]] $hTags.[$md5][$match.1] /%$md5%/ }] ^rem{теперь у нас в $str нет тэгов, махаем оставшиеся < >} $str[^str.replace[$tReplaces]] ^rem{вертаем тэги назад} ^hTags.foreach[md5;tag]{ $str[^str.match[/%$md5%/][g]{$tag}] }в качестве оптимизации можно из хэша тэгов перед восстановлением сделать таблицу замен, а потом сделать с помощью нее replace , а не делать кучу матчей. Но это надо проверять, не уверен что это быстрее.