| Новости | 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 , а не делать кучу матчей. Но это надо проверять, не уверен что это быстрее.